Javascript 目标只有一个按钮的角度
Im从DB获取div中的值,并使用ng repeat显示:Javascript 目标只有一个按钮的角度,javascript,angularjs,ng-class,Javascript,Angularjs,Ng Class,Im从DB获取div中的值,并使用ng repeat显示: 我在css中定义了一个类isActive,该类在单击按钮时应用/删除。有5个结果,因此创建了5个div,导致ng重复,每个div有5个按钮1。问题是,每个按钮都有5个,都得到了该类。我希望该类仅应用/删除到单击的按钮。如何实现这一点?您需要跟踪每个按钮的状态 一种方法是将名称或唯一标识按钮的任何内容传递给函数: <div ng-controller = "myTest"> <div ng-repeat="nam
我在css中定义了一个类isActive,该类在单击按钮时应用/删除。有5个结果,因此创建了5个div,导致ng重复,每个div有5个按钮1。问题是,每个按钮都有5个,都得到了该类。我希望该类仅应用/删除到单击的按钮。如何实现这一点?您需要跟踪每个按钮的状态 一种方法是将名称或唯一标识按钮的任何内容传递给函数:
<div ng-controller = "myTest">
<div ng-repeat="name in names">
<h4>{{name.name}}</h4>
<button ng-class="{'active': buttons[name].isActive}" ng-click="test(name)" >me</button>
</div>
</div>
$scope.buttons = {};
$scope.test= function(name){
$scope.buttons[name].isActive = !$scope.buttons[name].isActive;
}
您可以尝试以下方法:
<div ng-controller="myTest">
<div ng-repeat="name in names">
<h4>{{name.name}}</h4>
<button ng-class="{ active : name.isActive }"
ng-click="name.isActive = !name.isActive">me</button>
</div>
</div>
希望这会有所帮助。我创建了一个解决此问题的方法,无需修改源数组
你的功能变成了
vm.test = function(buttonIndex) {
//Clear the class if you press the same button again
if (vm.buttonIndex === buttonIndex) {
vm.buttonIndex = undefined;
} else {
vm.buttonIndex = buttonIndex;
}
};
你的HTML是
<div ng-repeat="name in main.names track by $index">
<h4>{{name.name}}</h4>
<button ng-class="{'active': main.buttonIndex===$index}" ng-click="main.test($index)">me</button>
</div>
谢谢我试过了。什么也没发生。我将其更改为name.name,例如:ng class={'active':buttons[name.name].isActive}以及testname.name,因为name.name是唯一的,并且name没有值,因为我使用的是ng repeat。还是不行。我理解您的逻辑,但在使用ng-repeat时,我如何传递一些标识。您可以使用ng-repeat的内部索引,并通过ng-click属性中的test$index。尝试了ng-click=test$index(带和不带按钮[name.name])。这根本不起作用。我创建了一个关于遇到这个,这是我的错误现在我编辑我的答案,我尝试它。您不再需要控制器中的fonction$scope.testindex。遇到了这个问题,这是我的错误现在更新了我的plunk以使用对象,并且只将索引保留在轨迹中。
vm.test = function(buttonIndex) {
//Clear the class if you press the same button again
if (vm.buttonIndex === buttonIndex) {
vm.buttonIndex = undefined;
} else {
vm.buttonIndex = buttonIndex;
}
};
<div ng-repeat="name in main.names track by $index">
<h4>{{name.name}}</h4>
<button ng-class="{'active': main.buttonIndex===$index}" ng-click="main.test($index)">me</button>
</div>