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

<pre></pre>您可以看到的问题是,当您单击“转到第 3 页”按钮时,标签上的“页码”不会改变。

谢谢

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 fire when ng-model is changed的​​副本,它有一个更彻底的答案,但我没有足够的声誉来标记这个问题。)

于 2018-02-02T16:28:15.410 回答