Angularjs bootstrap分页集页面不会触发页面更改

时间:2014-10-24 15:51:25

标签: javascript angularjs twitter-bootstrap pagination angular-bootstrap

我有以下分页代码

<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

您可以看到的问题是,当您点击&#34;转到第3页&#34;按钮&#34;页码&#34;不会更改<pre></pre>代码。

由于

1 个答案:

答案 0 :(得分:2)

ng-change不是由代码更改触发的。您可以通过在控制器中使用$ scope。$ watch来获得所需的效果:

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

updated plnkr

(老实说,这是Angular - ng-change not firing when ng-model is changed的副本,其中有一个more thorough answer,但我没有足够的声誉来标记这个问题。)