Firebase / AngularFire性能问题导致页面无响应? $看错吗?

时间:2014-10-16 18:04:58

标签: javascript angularjs firebase angularfire

我已经使用angularfire构建了一个网站,我注意到,当网站处于打开状态时,它开始滞后并最终冻结浏览器。

有没有办法可以追溯到源头,看看是什么导致了它?

很有可能是这种双重监视功能,但是当我在$ firebase数组上更改.start()和.end()参数时,我似乎无法正确排序并重新填充。

  scope.$watch(function(){
    scope.list.$watch(updateList);
    return scope.list;
  }, updateList);

似乎与嵌套有关。以下工作更好。任何人都可以解释为什么我需要设置两个$ watch?

  scope.list.$watch(updateList);
  scope.$watch(function(scope){
    return scope.list;
  }, updateList);

2 个答案:

答案 0 :(得分:0)

我认为你误解了如何使用$ watch。正确的语法是。

scope.$watch('list', updateList);

可替换地,

scope.$watch('list', function(newValue, oldValue) {
     if (someConditional) {
         updateList()
     }
});

有关详情,请参阅https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$ watch

答案 1 :(得分:0)

如上所述,此代码将递归地建立侦听器,每次范围发生更改时都会增加资源使用量。

目前还不清楚为什么你选择同时观看范围和列表的$ watch方法,但是其中只有一个是必要的。

list.$watch(function() {
   // do whatever needs to be done when the list changes
});

此外,updateList意味着您正在更改列表或复制它。如果您要更改$ watch事件中的列表,则会触发更多监视事件。如果您正在制作列表的副本,那么这些可能是不必要的。

有关用例和最终目标的更多背景信息可能有助于细节。