2013-06-03 55 views
2

只要將集合中的所有對象的IsSelected屬性設置爲false,就想禁用按鈕。

深手錶採取行動的集合,當一個屬性的變化,我做的:

$scope.$watch('messages', function (i) { 
     //do something 
}, true); 

但集合太大(其實我只有兩個元素,但這些都是大的對象)的d我跑在'內存不足'的例外。

那麼,我該怎麼做呢?

[編輯]

以下@boxed建議:

 $scope.$watch(function() { 
      return $($scope.messages).map(function() { 
       return this.IsSelected; 
      }); 

     }, function (e) { 
      //do something 
     }); 

它仍然是非常緩慢的,我遇到了錯誤:

  • ERREUR D'執行JavaScript的:10達到$ digest()迭代。中止!
+2

,如果你只是想觀看collectionn然後你可以看「messages.length」對象的添加和刪除 –

+0

你可以做的影子版本只需要觀看物品的物品? – Sharondio

回答

2

$ watch的第一個參數可以是一個函數。在該函數中,您可以返回所有項目的所有IsSelected屬性的列表。

+0

我試過這個解決方案,但是我得到一個很慢的錯誤。由於某種原因,用於觀看的代碼在頁面加載期間被無數次觸發。我已經更新了我的代碼。錯誤是Erreur d'exécutionJavaScript:達到10 $ digest()迭代。中止! 觀察者在最近的5次迭代中觸發了:[[],[],[],[],[]] – Sam

+0

無論如何,這聽起來像是某種進步:P也許你應該只有事件處理程序用於更改IsSelected相反,在那裏你循環的項目。 – boxed

+0

這就是我所做的,但是Angular的方式更像是觀察事物的變化,不是嗎? – Sam