Javascript Angularjs-ui选择的必填字段验证

Javascript Angularjs-ui选择的必填字段验证,javascript,angularjs,Javascript,Angularjs,使用AngularJs 1.3.4,我试图验证ui选择控件。此控件被包装在ng repeat中。下面是我的ui选择 <ui-select tagging tagging-label="new tag" multiple ng-model="data.value" theme="bootstrap" name="value"> <ui-select-match placeholder="Enter values..">{{$item}}<

使用AngularJs 1.3.4,我试图验证ui选择控件。此控件被包装在ng repeat中。下面是我的ui选择

 <ui-select tagging tagging-label="new tag" multiple ng-model="data.value" theme="bootstrap" name="value">
              <ui-select-match placeholder="Enter values..">{{$item}}</ui-select-match>
              <ui-select-choices repeat="tags in vm.availableTags | filter:$select.search">
                {{tags}}
              </ui-select-choices>
            </ui-select>
在阅读了几篇文章后,我添加了隐藏输入,如下所示,与ui select同名:

<input type="hidden" ng-model="data.value" name="value_{{$index}}" class="form-control" required />

上面的代码可以工作,但问题是当您在ui中键入某个内容,然后选择并删除您选择/键入的内容时,它会通过验证,并且不会引发错误。 理想情况下,它应该返回isValid for false,但返回true

我在这里为我的问题创建了一个演示:


有人能帮我解决这个问题吗?

这是一个有趣的问题,问题是,当您最初将数据加载到字段时,它会在“value”属性下创建和数组。当删除该条目或标记时,它将留下空数组,这似乎足以完成所需的检查

我添加了一个控制器函数,用于在值数组为空时删除属性:

vm.clearData = function(data) {
    if (data.value && data.value.length == 0) delete data['value'];
}
然后,我使用ng change从ui选择元素调用它,这似乎是可行的,小提琴是

vm.clearData = function(data) {
    if (data.value && data.value.length == 0) delete data['value'];
}