如何验证lodash过滤器?

时间:2017-01-19 10:44:10

标签: html angularjs

我有三个下拉菜单: -

<form name="myForm" data-ng-submit="save(myForm.$valid)"novalidate="novalidate">
    <label>1st</label>
    <select ng-model="a.value[0]">
          <option value="One">One</option>
          <option value="Two">Two</option>
          <option value="Three">Three</option>
    </select>
    <label>2nd</label>
    <select ng-model="a.value[1]">
          <option value="One">One</option>
          <option value="Two">Two</option>
          <option value="Three">Three</option>                            
    </select>
    <label>3rd</label>
    <select ng-model="a.value[2]">
         <option value="One">One</option>
         <option value="Two">Two</option>
         <option value="Three">Three</option> 
    </select>

    <button type="submit" class="btn btn-warning"><i class="fa fa-save"></i>
           Save</button>
</form>

控制器代码: -

$scope.a.value = [];
 $scope.func = function () {  
    if (_.uniq($scope.a.value).length !== $scope.a.value.length) {
       scope.notify("error", "Please set unique values");
    }
 };

我想要的是,如果下拉列表中的值不唯一,则不应保存。我应该申请哪些验证?在哪里?

2 个答案:

答案 0 :(得分:0)

您所做的就是使用lodash识别重复值的主动方式。理论上你的实现应该有效。你试过吗?

理想情况下,当用户尝试选择值以获得更好的用户体验时,应检查重复值。一种方法是,您可以删除在后续下拉菜单中的第一个下拉列表中选择的值,依此类推。

答案 1 :(得分:0)

js添加: -

 $scope.allModels = {
   firstDD: 'One',
   secondDD: 'Two',
   thirdDD: 'Three'
 }

然后在html到所有下拉列表中使用

 <select ng-model="$scope.allModels.firstDD">
 <select ng-model="$scope.allModels.secondDD">
 <select ng-model="$scope.allModels.thirdDD">

save函数中偶然找到它们

$scope.save = function(){ 
  if($scope.allModels.firstDD != $scope.allModels.secondDD != $scope.allModels.thirdDD){
     //do the thing you want or post it to server
  }
}