2014-10-11 76 views
1

我想傾聽對對象的特定孩子所做的更改。 例如。 我存儲在火力數據

users: { 
    user1:{ 
    info:{ name: 'Jon', age:'21'}, 
    otherThings:{} 
    }, 
    user2:{ 
    info:{ name: 'Mark', age:'20'}, 
    otherThings:{} 
    } 
} 

現在,我可以通過

$scope.userObj = $firebase(userRef).$asObject(); 
$scope.userObj.$watch(function() { 
    console.log("data changed!"); 
}); 

收聽user1的變化,但有什麼辦法來聽的變化,只有當其子即$ scope.userObj .name更改?
它應該只與userObj,userObj.child('name')或類似的東西。

回答

1

Angular的$ watch命令接受點符號。剛纔看相應的字段demo

$scope.$watch('userObj.info.name', callback); 

更多的$scope docs。這是非常多的角101.

但最有可能的是,這是錯誤的方法。任何時候當你開始嘗試在控制器中觀察和操縱數據時,你可能會走錯路線。讓視圖處理觀察,並使用數據轉換(如$ extendFactory)在服務中或(在AngularFire的情況下)進行數據轉換。