gpt4 book ai didi

javascript - 如何修复此 ng 级切换比较?

转载 作者:行者123 更新时间:2023-11-29 19:27:58 26 4
gpt4 key购买 nike

http://plnkr.co/edit/7v63GXSIDon1QKm1GXCE?p=preview

我有一个数组,它存储每个被点击的按钮的名称。单击对象后,对象将放入数组中,我使用 ng-class 检查数组中对象的名称是否与用于创建按钮的模型相同。如果是这样,则打开或关闭 btn-info 类。

ng-class="{'btn-info': toggleArray[k].name == m.name}"

不确定我的代码有什么问题,但是如果您按从 1 到 3 的确切顺序单击按钮,它会起作用。但是,一旦您开始随机单击按钮,它很快就会崩溃。

plnkr example

Controller

.controller('ArrayCtrl', ['$scope', function($scope) {

// Init ArrayCtrl scope:
// ---------------------
var vs = $scope;
vs.message = "Add and remove objects from array:";
vs.toggleArray = [];
vs.apiArray = [{name: 'AAA'}, {name: 'BBB'}, {name: 'CCC'}];

vs.selectBtn = function(btnObj) {
var index = vs.toggleArray.indexOf(btnObj);
if (index !== -1) {
vs.toggleArray.splice(index, 1);
}
else {
vs.toggleArray.push(btnObj);
}
};

}
]);

标记

<div class="model-btns">
<ul>
<li ng-repeat="(k, m) in apiArray"
ng-click="selectBtn(m)"
class="tag-li">
<button class="btn"
ng-class="{'btn-info': toggleArray[k].name == m.name}">
{{m.name}}
</button>
</li>
</ul>
</div>

<div class="well list-delete">
<p>List to delete:</p>
<ul>
<li ng-repeat="item in toggleArray">
{{item}}
</li>
</ul>
</div>

最佳答案

问题就在这里:ng-class="{'btn-info': toggleArray[k].name == m.name}"

假设所有按钮都“关闭”,所以 toggleArray[]。您单击第二个按钮,因此 toggleArray 将是 [ { "name": "BBB"} ]。但是在该按钮的 ng 类表达式中,k 将为 1。因此 toggleArray[1] 未定义并且表达式永远不会为真,除非您首先单击第一个item 所以 toggleArray 有 2 个元素。

你可以简单地改变:

ng-class="{'btn-info': toggleArray[k].name == m.name}"

到:

ng-class="{'btn-info': toggleArray.indexOf(m) > -1}"

this plnkr 中所示.

关于javascript - 如何修复此 ng 级切换比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29837636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com