2016-01-18 84 views
0

我在網上看,但無法打開任何東西。有沒有人知道是否有$ watch返回只有其中一個屬性發生變化的對象。

目前讓它看着一個對象數組,以便當一個特定的屬性改變它然後更新另一個數組的對象。現在我正在迭代$ watch返回的新舊數組,並檢查是否發生了變化。看起來很浪費,而且我期望的大量數據不是我喜歡的東西。

回答

1

從AngularJS docs

$watch(watchExpression, listener, [objectEquality]):

  • watchExpression - 即在每個$評價消化週期的表達。返回值的變化觸發對收聽者的呼叫

  • listener - 每當watchExpression的值發生變化時調用回調函數; function(newVal, oldVal, scope); PARAMS:

    • newVal包含的watchExpression
    • oldVal當前值包含的watchExpression
    • scope以前的值是指當前範圍
  • objectEquality - 用比較的對象相等angular.equals而不是比較參考的相等性

所以你可以傳遞你的函數newValoldVal params並檢查數組中的對象是彈出/放入。

希望有幫助

+0

是的,我看着那些參數,但希望可能有一個失蹤。 – DimlyAware

0

試着用這個把戲。

$scope.$watch('myArray.length', function(){ 
    console.log("My array has changed",$scope.myArray); 
}); 
+0

感謝您的反饋意見。它不注意要插入的新對象,而是爲其中一個對象更新其中一個屬性,即 [{val:1},{val:1}],並且第一個對象的val將其值更新爲2 。我會看看手錶返回的對象索引更新 – DimlyAware