使用角度复选框模型验证

时间:2016-11-19 09:14:05

标签: javascript angularjs electron

我在角度/电子应用程序中使用了清单模型,并有以下三个复选框。

  1. 两个

  2. USA

  3. 加拿大

  4. 首先,默认情况下' 美国'如果用户点击了两者'或者' 加拿大' ,我需要检查一个特定的标志,如果标志是假的,我需要提醒用户并避免' 两者'或者' 加拿大'被点击。

    <div style="height:115px;background-color:#FBF9EC" class="form-control" >
                <label ng-repeat="item in locations" style="width:80%">
                        <input type="checkbox" checklist-model="locationData.item" checklist-value="item" checklist-before-change="checkListvalidate(item)" ng-change="checkBoxClickFunc(item)" ng-click="locationClick()"> 
                        {{item}} 
                </label>
            </div>
    
    In the controller:
    $scope.locationClick = function(){
         if(!myFlag){
              return false;
         }
    };
    

    核对表 - 更改前的规范说明

      

    每次检查清单模型更改之前评估的角度表达式。如果它评估为“假”&#39;然后模型将不再改变。

    我做错了什么......

1 个答案:

答案 0 :(得分:0)

在checkbox输入中有很多侦听器:

  • checklist-before-change="checkListvalidate(item)"
  • ng-change="checkBoxClickFunc(item)"
  • ng-click="locationClick()"

我认为这些对于满足您的需求来说太过分了,而且它使逻辑的理解变得复杂,并且可能产生副作用。
为什么不仅使用checklist-before-change指令并在其中调用locationClick()?我认为这应该足够了。

这是一个例子:

 <body ng-controller="MainCtrl">
    <div style="height:115px;background-color:#FBF9EC" class="form-control" >
            <label ng-repeat="item in locations" style="width:80%">
                    <input type="checkbox" checklist-model="locationData.item" 
                           checklist-value="item" checklist-before-change="checkListvalidate(item)" > 
                    {{item}} 
            </label>
        </div>
  </body>