ng-repeat模型在ng-repeat内部通过(key,val)不更新

Med*_*uly 16 angularjs

这是我的工作演示

<section ng-repeat="t in test">
  <div ng-repeat="(key,value) in t">
    <div>{{key}}</div>
   <input type="text" ng-model="value"/>
  </div>
</section>
Run Code Online (Sandbox Code Playgroud)

模型保持不变.如何同步?请注意,数据结构很重要.

tho*_*aux 30

ng-model结合将评估在当前范围的表达.在ng-repeat创建子范围时,这意味着ng-model将查找value在子范围上命名的属性.在您的示例中,我们希望它val作用域上查找属性,该作用域是别名t.

这是设计使用,可以通过引用t表达式中的父作用域来规避您的情况.

工作演示

代码(注意输入元素上的绑定已更改):

<section ng-repeat="t in test">
  <div ng-repeat="(key,value) in t">
    <div>{{key}}</div>
   <input type="text" ng-model="t[key]"/>
  </div>
</section>
Run Code Online (Sandbox Code Playgroud)

当您使用Angular 1.3的测试版时,这可能是一个错误.

  • 如果没有'.' 在ng-model中,然后当在范围上分配模型时(即在输入字段中输入文本),它将在子范围中创建影子变量(ng-repeat创建子范围),该变量是变量的副本在父范围内 - 打破双向绑定.这是设计 - 但可能是很多混乱的根源.数组表示法(item [])是例外. (4认同)