ng-repeat的私有作用域scope

起因:

前几天用angular碰到个scope的问题,成功触发了div的ng-click事件,但是全局变量的值不改变。

例子:

1
2
3
4
5
6
7
<ion-scroll class="filter" ng-init="cis=0">
<div ng-repeat="item in pos"
ng-class="{'active': cis== item.id }"
ng-click="cis=item.id;">
{{item.name}}
</div>
</ion-scroll>

原因:

ng-repeat在遍历创建列表的时候,ng-repeat里面输出的元素会有自己新的scope,也就是说这里的 cis 的作用域已经发生了变化,ng-init 中声明的 cis 和 ng-class 中的 cis 已经变成了不同的变量了。这样写相当于 cis[0] = item.id, cis[1] = item.id, cis[2] = item.id。

解决方法:

使用ng-model双向绑定的时候,建议绑定的对象属性比如ng-model=”L.cis”,而不是ng-model=”cis”,否则你会出现各种问题。

文章目录
  1. 1. 起因:
  2. 2. 例子:
  3. 3. 原因:
  4. 4. 解决方法:
,