有一个具有某些属性的嵌套对象,我不想被观看。它可能是一种以“_”开头的属性模式。
这是一个示例结构。
$scope.ObjectToBeWatched = {
"company": {
"ts": {
"_msg": {"nm":""},
"status": "success"
},
"ids": [
"000000010",
"000000011"
]
},
"_f": [
{
"code": "TY_IO",
"status": "fail"
}
]
}
标准深度观察:
$scope.$watch("ObjectToBeWatched",function(newObj,oldObj){
},true);
现在, watch 正在触发任何预期属性的任何变化。因此,在上述情况下,对属性进行任何更改
_msg, _f
不应触发。
感谢您的帮助。
最佳答案
你可以尝试这样的事情:
$scope.$watch(function($scope) {
return $scope.listOfBigObjects.
map(function(bigObject) {
return bigObject.foo.
fieldICareAbout;
});
}, myHandler, true);
这仅从数组中的对象中获取您关心的 Prop 。您可以使用表达式来检查对象映射内的某些字段类型。如果您没有数组,请跳过该部分。
如果“map”不完全是您返回您关心的字段所需要的,Underscore 有大量的函数方法可以帮助您完成此任务。
关于javascript - 如何深度观察AngularJS中排除指定模式的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31372216/