我有一个ul
,其li
填充ng-repeat = "thing in things"
。每个li
都有一个由true
定义的false
或$scope.isTrue = true;
值。当用户点击li
时,我想将其$scope.isTrue
值更改为false
。如果用户点击其他li
我想将其 $scope.isTrue
值更改为false
,并将可能false
的任何其他值更改为{ {1}}。
到目前为止,这是我的代码(http://jsfiddle.net/HB7LU/8401/):
HTML:
true
角:
<ul>
<li ng-repeat="thing in things" >
<p ng-click="changeVal()">{{isTrue}}</p>
</li>
</ul>
http://jsfiddle.net/HB7LU/8401/
目标是一次只有一个$scope.isTrue = true;
$scope.changeVal = function() {
if (this.isTrue == true) {
$scope.isTrue = true; //I try to change them all to true
this.isTrue = false; //but nothing happens.
} else if (this.isTrue == false) {
$scope.isTrue = true;
this.isTrue = true;
}
};
值。谢谢你的帮助。
答案 0 :(得分:1)
为什么不做那样的事情:
<div ng-controller="MyCtrl">
<ul>
<li ng-repeat="(key,val) in things" >
<p ng-click="changeVal(key)">{{val}}</p>
</li>
</ul>
</div>
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.things = {
0: true,
1: true,
2: true
}
$scope.changeVal = function(key) {
$scope.things[key] = false
for (k in $scope.things){
if (k!= key && $scope.things[k] == false){
$scope.things[k] = true
}
}
};
}
请参阅fiddle