这是表示表单数据的范围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可能有?
我的目的是制作我的表格' save'禁用或启用,具体取决于用户在表单上更改了某些内容。
答案 0 :(得分:20)
有$watch()
的第三个参数可以检查对象是否相等(深度监视)。
$scope.$watch('form', function(newVal) { //watch the whole object
if(newVal) {
alert(newVal);
}
}, true); //pass "true" here.
为了进一步完善我的答案,在这种情况下,这两种方法都会产生相同的结果:Live demo here (click).但 $watchCollection
很浅,并且不会监视任何嵌套的更改。
$scope.$watch('form', function(newForm, oldForm) {
console.log(newForm.name);
}, true);
或者:(不是深刻观察)
$scope.$watchCollection('form', function(newForm, oldForm) {
console.log(newForm.name);
});
答案 1 :(得分:2)
从AngularJS 1.1.x开始,观察数组或对象属性中多个值的首选方法是$ watchCollection http://docs.angularjs.org/api/ng.$rootScope.Scope
$scope.$watchCollection('form', function(newValues, oldValues) {
console.log('*** Watch has been fired. ***');
console.log('New Names :', newValues);}
);