2

次のページネーションコードがあります

<pre>There are {{total_records}} number of records</pre>
<pagination ng-model="current_page"
            total-items="total_records"
            items-per-page="items_per_page"
            max-size="max_size" class="pagination-sm"
            boundary-links="true" rotate="false"
            num-pages="numPages" ng-change="pageChanged()">
</pagination>

DOMをクリックしてページネーションを変更すると、機能します。しかし、コード内で $scope.current_page を設定してページネーションを変更しようとすると、pageChanged がトリガーされません。

例えば、

DOM では 3 ページ目 ($scope.current_page は 3) にいて、DOM では 3 ページ目がアクティブであるとします。DOM をクリックして 4 ページに移動すると、DOM の 4 ページ目がアクティブになり、$scope.current が 4 に変更され、pageChagned がトリガーされます。

しかし

DOM では 3 ページ目 ($scope.current_page は 3) にいて、DOM では 3 ページ目がアクティブであるとします。コードで $scope.current_page を 4 に変更して 4 ページに移動すると、DOM ページが 4 に変更されますが、pageChanged はトリガーされません。

コードで $scope.current_page を変更するときに pageChanged をトリガーするにはどうすればよいですか? $scope.$watch の使用を提案したときに別の解決策を見たことがありますが、より良い方法を知りたいです。

編集:

次のplnkrを作成しました(これを初めて使用したため、正しいかどうかはわかりません)。 http://plnkr.co/edit/Kldv7ZbexpgifiPIsjCT?p=preview

あなたが見ることができる問題は、「3ページ目に移動」ボタンをクリックしても、<pre></pre>タグの「ページ番号」が変更されないことです。

ありがとう

4

1 に答える 1

3

ng-change は、コードの変更によってトリガーされません。コントローラーで $scope.$watch を使用すると、目的の効果を得ることができます。

$scope.$watch(function() {
    return $scope.current_page;
}, function() {
    $scope.number_of_change++;
});

更新されたplnkr

(正直なところ、これはAngular - ng-change not fireing when ng-model is changedの複製であり、より完全な回答がありますが、この質問にフラグを立てるほどの評判はありません。)

于 2018-02-02T16:28:15.410 に答える