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

时间:2013-12-06 08:27:08

标签: angularjs

如果未绑定在html中,angularjs会监视/跟踪id属性的更改吗?

JS

$scope = { firstname: "test1", lastname: "test2", id: 10};

HTML

<input type="text" ng-model="firstname" />
<input type="text" ng-model="lastname" />

2 个答案:

答案 0 :(得分:0)

它确实关注双向数据绑定。但是,您应该始终使用.。这是因为原型继承。您可能使用的<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
});

答案 1 :(得分:0)

  

angularjs是否会监视/跟踪id属性的更改?

不自动。 AFAIK,在编译阶段创建监视,当angular通过DOM解析时,可以了解它需要跟踪的内容。例如,如果在模块中定义控制器,但从不在HTML中使用ng-controller,则永远不会创建控制器的实例。你可以看到这是一件好事。

如果您想为id手动设置监视,请使用$scope.$watch来执行此操作。