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”。这显然没有发生。有什么想法吗?谢谢

你可以找到普朗克的例子

  • 单击导航选择器上的Maracuya。选中复选框。观察马拉库亚利克大师:“假”和修改:是
  • 现在选择任何其他水果
  • 回到马拉库亚。观察马拉库亚利克大师变成“真”并被修改:否。形态处于修改状态,没有办法回到未修改状态

  • 我联系了这个图书馆的作者。显然,这个库只对固定的元素起作用。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">
    
    
    
    你可以找到普朗克