Javascript ng开关与角输入修正行为
尝试使用模块跟踪用户是否对表单进行了任何更改。通过全局禁用行为,然后仅向所需表单字段添加可修改的行为,使用包含策略。 我的问题是跟踪集合中的更改。更具体地说,我得到了项目集合,当用户选择一个项目时,会显示相应的属性。当用户更改任何属性时,应启用“保存”按钮。 到目前为止,我试过:Javascript ng开关与角输入修正行为,javascript,angularjs,forms,ng-switch,Javascript,Angularjs,Forms,Ng Switch,尝试使用模块跟踪用户是否对表单进行了任何更改。通过全局禁用行为,然后仅向所需表单字段添加可修改的行为,使用包含策略。 我的问题是跟踪集合中的更改。更具体地说,我得到了项目集合,当用户选择一个项目时,会显示相应的属性。当用户更改任何属性时,应启用“保存”按钮。 到目前为止,我试过: COLLECTIONS <select ng-model="wiDevCtrl.currentCollection" ign
COLLECTIONS
<select ng-model="wiDevCtrl.currentCollection"
ignore-dirty
ng-options="opt as opt.Name for opt in wiDevCtrl.device.Collections"></select>
集合
现在根据用户选择的收藏项目将显示相应内容的复选框
<div class="form-group subSection" bs-modifiable="true">
<input type="checkbox"
ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" /> </div>
但这种方法会导致将angular input modified模块中的“modified”标志更改为“true”,因为很明显,当集合更改时,它会更改复选框中的值(通过绑定),这与保存为$pristine值不同
我认为,如果我为每个集合创建“peronal”复选框,它将解决问题。为此,我尝试使用开关:
<div class="form-group subSection">
<div ng-switch on="wiDevCtrl.currentCollection.Name" bs-modifiable="true">
<div ng-switch-when="ng-switch-default"></div>
<div ng-switch-when="1">
<input type="checkbox"
ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" />
</div>
<div ng-switch-when="2">
<input type="checkbox"
ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" />
</div>
<div ng-switch-when="3">
<input type="checkbox"
ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" />
</div>
</div>
</div>
在那之后,我几乎得到了正确的行为,除了一件事。当我更改复选框时,它将正确地将“修改”设置为true。但当我切换到另一个集合并返回“masterValu”e时,该复选框变为相反,就像我调用$pristine一样,但我没有。我预计,当我返回到上一个集合并将复选框更改回原始的“已修改”状态时,状态将为“false”。这显然没有发生。有什么想法吗?谢谢
你可以找到普朗克的例子
我联系了这个图书馆的作者。显然,这个库只对固定的元素起作用。ng开关和ng If将重建DOM元素,因此所有元素都将重置为默认值。解决此问题的唯一方法是将动态图元更改为固定图元,并相应地显示/隐藏它们,如下所示:
<input name = "myFruits" ng-repeat="x in user.favoriteFruit" ng-show="user.favoriteFruit.id == $index" type="checkbox" ng-model="fruits[$index].like" bs-modifiable="true">
你可以找到普朗克