0

基本上,我正在尝试将 $watch 与 angularFireCollection 一起使用。它似乎没有按照我想要的方式工作。

这就是我目前所拥有的:

$scope.bits = angularFireCollection(new Firebase(url).limit(75));

$scope.$watch('bits', function() {

    console.log('new');

});

因此,当我加载页面时,它会在首次加载数据时在控制台中记录“新”,这很好,但是当新数据进入时,它不会记录任何内容。知道为什么会这样吗?

4

1 回答 1

0

$watch 只查看对象引用(它使用 === 比较它们),所以由于 $scope.bits 始终是同一个数组实例,即使它的内容已经改变,它也不会触发你的监听器。

您可以向 $watch 传递一个附加参数,使其能够比较对象的内容:

$scope.$watch('bits', function() {}, true);

我从未听说过bits.length像@robertklep 建议的那样使用,但这看起来也很优雅,如果他将其发布为答案,我会赞成。

于 2013-07-15T14:14:15.057 回答