Javascript ng点击不';在ng repeat中时不更改HTML中的值

Javascript ng点击不';在ng repeat中时不更改HTML中的值,javascript,angularjs,Javascript,Angularjs,所以我不知道这是AngularJS的问题,还是我的理解问题 在我的应用程序中,我有一个ng repeat,我需要跟踪活动的$index,当你点击另一个项目时可以更改它。所以我想我会做一些类似的事情: <body ng-init="active = -1"> <span ng-repeat="item in items" ng-bind="item" ng-click="active = $index"></span> </body> 下面

所以我不知道这是AngularJS的问题,还是我的理解问题

在我的应用程序中,我有一个
ng repeat
,我需要跟踪活动的
$index
,当你点击另一个项目时可以更改它。所以我想我会做一些类似的事情:

<body ng-init="active = -1">
    <span ng-repeat="item in items" ng-bind="item" ng-click="active = $index"></span>
</body>

下面是这两种情况的一个例子。为什么?

你可以像下面那样解决这个问题

在HTML中

<span ng-repeat="item in items track by $index" ng-click="x.badClick = $index"> // x.badClick
这是因为它会为每个重复创建新的范围

他说,

每个模板实例都有自己的作用域,其中给定的循环变量设置为当前的

如果你喜欢
x.badClick
x
不在ng repeat作用域中,因此它将在下一个顶部作用域中检查
x
,如果你需要更多,请检查
原型继承
,这是一个很好的演示


您还可以使用
$parent
引用父属性,因此这也会起作用

<span ng-repeat="item in items track by $index" ng-click="$parent.badClick = $index">


所以解决方案似乎是“ng click=“$parent.badClick=$index”“@MarvinSmit,是的,我正在阅读页面。事实上,我更喜欢Kalhano的解决方案,因为它不依赖$parent和上面提到的问题。另一个可能的@E.H.B,谢谢。但我真的很喜欢下面的答案,因为我只更新活动索引,而且我宁愿将其保存在HTML页面中itself@Kousha是的,那真是个好主意
$scope.x = {};
<span ng-repeat="item in items track by $index" ng-click="$parent.badClick = $index">