【发布时间】:2014-03-01 00:54:36
【问题描述】:
我正在使用 ng-repeat 在 HTML 中创建一个表单,以从范围内的对象生成表单元素。我还使用该对象生成 ng-repeat 之外的其他元素。
HTML 中的简化示例如下所示:
<div ng-app="App">
<div ng-controller="Ctrl">
<div class="block1">
<form ng-repeat="(key, value) in test">
<label>{{key}}</label>
<input ng-model="value" />
<p>{{value}}</p>
</form>
</div>
<div class="block2">
<p>
{{test.a}}
</p>
<p>
{{test.b}}
</p>
</div>
</div>
</div>
这在 JS 中:
angular.module('App', []);
function Ctrl($scope) {
$scope.test = {
a:"abc",
b:"def"
}
}
在本例中,block2 中的文本设置为test.a 和test.b 的初始值。循环内的输入值和<p> 值也设置为初始值。
当我修改输入中的值时,ng-repeat 块内的<p> 值正确更新,但块2 中的<p> 标记无法更新。
为什么会出现这种行为? ng-repeat 是否创建自己的隔离范围?如果是这样,我怎样才能让控制器级别的范围更新?另外,有人能解释一下这种行为背后的想法以及它提供的任何优势吗?
【问题讨论】:
标签: javascript angularjs angularjs-ng-repeat