2014-10-16 32 views
2

我已經構建了一個使用angularfire的網站,並且我注意到,當網站處於打開狀態時,它開始滯後並最終凍結瀏覽器。

有沒有一種方法可以追溯到源代碼來查看是什麼原因造成的?

這很可能是這個雙重監視功能,但我似乎無法得到列表,以正確排序和重新填充當我更改$ firebase數組上的.start()和.end()參數。

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

似乎與嵌套有關。以下工作更好。任何人都可以請解釋爲什麼我需要兩個$手錶安裝程序?

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

回答

0

我想你是誤解如何使用$ watch。正確的語法是。

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

另外,

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

詳情參見https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$看

+0

最初的海報是在firebase/angularfire的上下文中詢問$ watch函數 – henry74 2015-03-09 18:50:05

0

書面,這段代碼將遞歸建立聽衆,每次有越來越多的資源使用情況範圍的變化。

目前尚不清楚爲什麼你選擇觀看範圍和列表的$ watch方法,但只有其中一個應該是必要的。

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

此外,updateList意味着您正在更改列表或製作副本。如果您正在更改$ watch事件內的列表,那將觸發更多觀看事件。如果你正在製作這份清單的副本,那可能是不必要的。

有關用例和最終目標的更多上下文可以幫助您瞭解具體情況。