Javascript 使用AngularJS检测AngularFireCollection的更改
基本上,我正在尝试将$watch与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”,这很好,
$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它必须有大量的数据才能减慢速度,但是,是的,它在默认情况下不打开是有原因的!