我想听一个对象的特定孩子所做的更改。 对于前者 我将数据存储在firebase中
users: {
user1:{
info:{ name: 'Jon', age:'21'},
otherThings:{}
},
user2:{
info:{ name: 'Mark', age:'20'},
otherThings:{}
}
}
现在,我可以通过
收听user1中的更改$scope.userObj = $firebase(userRef).$asObject();
$scope.userObj.$watch(function() {
console.log("data changed!");
});
但有没有办法只在其子元素$ scope.userObj.name更改时才听取更改?
它应该只有userObj,userObj.child('name')或类似的东西。
答案 0 :(得分:1)
Angular的$ watch命令接受点表示法。只需观看相应的字段demo:
$scope.$watch('userObj.info.name', callback);
在$scope docs中阅读更多内容。这几乎是Angular 101。
但最有可能的是,这是错误的做法。每当你开始尝试观察和操纵控制器中的数据时,你可能都走错了路线。让视图处理观察,并使用$ extendFactory等数据转换在服务或(在AngularFire的情况下)进行数据转换。