angularjs是否在未绑定到html的范围内监视/跟踪属性



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
});

最新更新