【问题标题】:Detect alteration of AngularFireCollection with AngularJS使用 AngularJS 检测 AngularFireCollection 的更改
【发布时间】:2013-07-15 09:44:36
【问题描述】:

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

这是我目前拥有的:

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

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

    console.log('new');

});

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

【问题讨论】:

  • 你试过看bits.length吗?
  • @robertklep 效果很好,非常感谢!

标签: javascript angularjs firebase angularfire


【解决方案1】:

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

你可以给 $watch 传递一个额外的参数,让它比较对象的内容:

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

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

【讨论】:

  • 并且传递那个额外的参数会更加占用 CPU(取决于对象),对吧?
  • @bennlich 它必须是大量数据才能减慢速度,但是,是的,默认情况下它没有打开是有原因的!
猜你喜欢
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
相关资源
最近更新 更多