使用AngularJS观察整个对象(深度观察)
Watch entire object (deep watch) with AngularJS
这是一个表示表单数据的作用域angular-resource variable / object
:
$scope.form = {
name: 'bob',
email: 'bob@bobs.com'
}
这是我观察name
变量变化的方式。
$scope.$watch('form.name', function(newVal) {
if(newVal) {
alert(newVal)
}
});
如果有任何文件被更改,有什么方法可以查看——名称、电子邮件或任何scope.form可能有的内容?
我的目的是根据用户更改了表单上的内容来禁用或启用我的表单"保存"。
$watch()
的第三个参数将使其检查对象相等性(深度监视)。
$scope.$watch('form', function(newVal) { //watch the whole object
if(newVal) {
alert(newVal);
}
}, true); //pass "true" here.
为了进一步完善我的答案,在这种情况下,这两种方法都会产生相同的结果:在这里进行实时演示(点击)。但$watchCollection
是浅层的,不会观察任何嵌套的更改
$scope.$watch('form', function(newForm, oldForm) {
console.log(newForm.name);
}, true);
OR:(不是深度手表)
$scope.$watchCollection('form', function(newForm, oldForm) {
console.log(newForm.name);
});
由于AngularJS 1.1.x,监视数组中多个值或对象属性的首选方式是$watchCollectionhttp://docs.angularjs.org/api/ng.$rootScope.Scope
$scope.$watchCollection('form', function(newValues, oldValues) {
console.log('*** Watch has been fired. ***');
console.log('New Names :', newValues);}
);
相关文章:
- 在ko.applyBindings(..)中执行Knockout js订阅函数(用于可观察对象)
- 取代了棱角分明的深度观察者
- lodash:深度复制对象,但不是所有属性
- Knockout.js用单个json对象绑定一个可观察对象
- 使用AngularJS观察整个对象(深度观察)
- 角度深度比较对象(特定属性除外)
- 根据某些条件将 JS 绑定到可观察对象内的数组元素
- 如何深度删除对象中的键
- 如何从挖空可观察对象中获取所选项目的文本
- 从另一个可观察对象获取价值的最佳方法,而无需组合最新
- JavaScript:如何过滤深度JSON对象
- 可观察对象的角 2 条件链接
- 观察对象是否已更改
- 如何在 angularjs 中观察对象中的对象
- 深度克隆对象
- 将通过原型计算的可观察对象添加到构造函数中
- 挖空解包可观察对象无法按预期工作
- 如何从可观察对象数组中删除项目
- 深度可观察对象和foreach模板
- 如何在angularjs中深度观察一个对象,排除指定的模式