【发布时间】:2015-09-27 00:27:25
【问题描述】:
我只是从 Angular 开始,并试图了解作用域 API 中的 $watch 函数。这是我的 JS fiddle 的链接:
JS Fiddle Watch demo Not working
var myApp = angular.module('myApp1', []);
angular.element(document).ready(function() {
angular.bootstrap(document, ['myApp1']);
});
function MyController($scope){
var mc = this;
mc.focus = {
'name' :false,
'email':false
};
$scope.$watch(mc.focus,function(oldVal,newVal){
console.log(oldVal);
console.log(newVal);
},false);
mc.allFilled = false;
mc.setFocus = function(prop) {
mc.focus[prop] = true;
};
};
myApp.controller("MyController",MyController);
我想做什么:
1) 为了简洁和演示,我有 4 个输入,在上面的链接中只包含一个。
2) 每个输入在焦点对象中都有对应的键,初始值为 false。
3) 每当使用 setFocus() 函数聚焦适当的输入元素时,我将在焦点对象中将属性值更改为 true
4) 一旦焦点对象中的所有属性都具有真实值,我想将 allFilled 属性更改为 true。
我想在这里做什么: 为了实现我想做的事情,我正在观察焦点对象,并且在侦听器中,我将检查所有属性是否都具有 true 值。如果是,我将更改 allFilled 属性/或做其他事情。
我知道也许我可以在setFocus() 本身中执行上述逻辑,但想尝试$watch。
1) 是否可以使用$watch 执行此操作?
2) 为什么我的$watch 没有被调用?
3)在 Angular 中最好的方法是什么?
【问题讨论】:
-
我的第三个问题的任何答案
标签: angularjs angularjs-scope watch