我遇到AngularJs ng-repeat和angular-bootstrap-switch的问题
我正在使用:
ng-repeat="item in items track by $index"
当我通过以下方式将新项添加到数组的第一个索引中时:
newItem = {};
items.splice(0, 0, newItem);
DOM包含一个bs-switch: 添加新项目后,它会根据$ index重用数组中的第一个元素,因此不会重新呈现(that's what I get from this docs)。我遇到的问题是上一个元素具有开机。
我遇到的DOM效果问题是“ 开机”类在新项目上没有刷新,并且一直存在。
预期:在这种情况下,我要关闭,而不是像图像一样打开。因为它是一个空对象
P / s:业务原因
我无法为该 Switch 添加默认值。它必须是一个空对象
我也无法使用item对象的任何标识符来跟踪替换为$ index
如果我通过$ id使用默认轨道,也会引起一些业务问题
在Angular 1.5或更高版本上工作的温度解决方案:
角度为1.5时,您可以使用angular-bootstrap-switch 0.5.1
在frapontillo发布更改后,它将解决此问题:“ 在模型更改时进行“开关更改”触发”
非常感谢您的支持。
答案 0 :(得分:0)
我从您的问题中看到的是,您想向主数组添加一个新项目,并且在其呈现时,您希望默认情况下将其切换为关闭。
您需要牢记一些事情。
ng-repeat
在我们的DOM中仅表现为循环。
如果要默认关闭电源,则必须在主阵列的每个项目中都有一个模型。它将跟踪DOM中每个开关的状态。
这是您应该尝试的
在您的控制器上:
newItem = {switchState: 0};
items.splice(0, 0, newItem);
通过您的HTML:
<div ng-repeat="item in items track by $index">
<!-- your Name and Decription input fields.. -->
<input
bs-switch
ng-model="item.switchState" />
所以我认为您忽略了ng-model
导致您出现问题的角度引导开关。