范围不在angularjs中的ng-repeat之外工作

时间:2015-12-30 10:42:55

标签: 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>

控制器

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

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

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

1 个答案:

答案 0 :(得分:6)

ngRepeat创建新的子范围。这意味着在每个重复的li中都有一个新的范围,并且使用ngMOdel绑定到此本地范围。你可以这样做:

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

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