javascript - 范围在angularjs中的ng-repeat之外不起作用

标签 javascript angularjs

HTML

<ul>
    <li ng-repeat="obj in strA">
       obj.str = {{obj}}
       <input ng-model="obj" />
    </li>
</ul>
obj in <code>{{ strA.a1 }}</code> 
obj in <code>{{ strA.a2 }}</code>

Controller

$scope.strA = {
  a1: "abc",
  a2: "bcd"
};

当我更改文本框中的值时,ng-repeat 中的 obj 会发生变化。但是 包裹的值不会改变

这是代码笔:http://codepen.io/anon/pen/vLyrxm
为什么会这样?据我所知,这两个值都应该改变

最佳答案

ngRepeat 创建新的子作用域。这意味着在每个重复的 li 中都有一个新的作用域,而使用 ngMODel 您将绑定(bind)到这个本地作用域。你可以做这样的事情:

<li ng-repeat="(key, value) in strA">
    obj.str = {{value}}
    <input ng-model="strA[key]" />
</li>

演示: http://codepen.io/anon/pen/adBKVd?editors=101

关于javascript - 范围在angularjs中的ng-repeat之外不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34527891/

相关文章:

angularjs - 如何检测 Angular 1.5 组件路由器中的路由更改?

javascript - 加载所有内容后显示具有多个 ng-repeat 的表单

javascript - 包含从属性创建 TemplateUrl 的页面的指令

javascript - 如何在 JavaScript 中对数字和变量使用乘法

javascript - 离线应用程序中的 Backbone.js

javascript - 使用 ui-select-match 选择多个条目

javascript - AngularJS HTTP请求不会出现在错误中

javascript - 使用 jQuery 删除 Handsontable 中的 selectedRow

javascript - 单击一个不属于 'close' 按钮的单独按钮无论如何都会触发关闭事件

javascript - 如何从 $.getjson 获取数据