angularjs是否在id属性未绑定到html时监视/跟踪其更改?
JS
$scope = { firstname: "test1", lastname: "test2", id: 10};
HTML
<input type="text" ng-model="firstname" />
<input type="text" ng-model="lastname" />
angularjs是否监视/跟踪id属性的变化?
不是自动的。AFAIK,当angular通过DOM进行解析以了解需要跟踪的内容时,会在编译阶段创建手表。例如,如果您在模块中定义了一个控制器,但从未将其与HTML中的ng-controller
一起使用,则永远不会创建控制器的实例。你可以看到这是一件好事。
如果您想手动设置id
的手表,请使用$scope.$watch
。
它确实监视双向数据绑定。但是,您应该始终使用.
。这是因为原型遗传。您可能使用过的<form>
标记引入了一个新的子作用域,在这种情况下,firstname/lastname将被覆盖。
不要使用
<input ng-model="firstname"> <!-- NO -->
但使用
<input ng-model="form.firstname"> <!-- YES -->
在控制器中,使用$scope.form = { firstname: '...', lastname: '...', id: '...' };
。Angular会留意变化。
监视form.id
您可以在控制器中使用以下内容来观察id
属性的变化:
$scope.$watch('form.id', function(newVal, oldVal) {
// do something with changed value
});