Javascript 使用AngularJS检测AngularFireCollection的更改

Javascript 使用AngularJS检测AngularFireCollection的更改,javascript,angularjs,firebase,angularfire,Javascript,Angularjs,Firebase,Angularfire,基本上,我正在尝试将$watch与angularFireCollection结合使用。无论我希望它以何种方式工作,它似乎都不起作用 这就是我目前的情况: $scope.bits = angularFireCollection(new Firebase(url).limit(75)); $scope.$watch('bits', function() { console.log('new'); }); 因此,当我加载页面时,当数据第一次加载时,它会在控制台中记录“new”,这很好,

基本上,我正在尝试将$watch与angularFireCollection结合使用。无论我希望它以何种方式工作,它似乎都不起作用

这就是我目前的情况:

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

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

    console.log('new');

});

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

$watch只查看对象引用(它使用===对它们进行比较),因此由于$scope.bits始终是同一个数组实例,即使其内容已更改,它也不会触发侦听器

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

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

我从未听说过像@robertklep建议的那样使用
bits.length
,但这看起来也很优雅,如果他把它贴出来作为答案的话,我会投他的票。

你试过看
bits.length
吗?@robertklep效果很好,非常感谢!传递这个额外的参数需要更多的cpu(取决于对象),对吗?@bennlich它必须有大量的数据才能减慢速度,但是,是的,它在默认情况下不打开是有原因的!