javascript - 如何动态设置 md-autocomplete 的必填字段

标签 javascript html angularjs autocomplete angular-material

尝试在自定义目录中使用 md-autocomplete

我希望根据两个条件需要该字段。一个是初始化的(cond1),一个是变化的(cond2)

我试过这样做: required="{{ cond1 && !cond2 }}"

但由于某些原因,md-autocomplete 始终是必需的,即使 cond1 最初是 undefinedfalse。它也不响应对 cond2 的值所做的更改。

验证器也不检查所选项目是否已设置。它只是检查字段中是否有文本。

ng-required 似乎什么都没做。

我有什么想法可以让这项工作成功吗?

编辑:

这是我的指令的 .html

<div ng-form="dummyForm">
    <md-autocomplete
            md-input-name="{{ctrl.fieldName}}"
            md-selected-item="ctrl.dummyItem"
            md-selected-item-change="ctrl.setSelectedItem()"
            md-search-text="ctrl.searchText"
            md-items="item in ctrl.querySearch(ctrl.searchText)"
            md-item-text="item.display || item"
            md-min-length="0"
            placeholder="{{ ctrl.placeholder }}"
            ng-disabled="ctrl.selectAll || ctrl.isDisabled"
            required="{{ ctrl.isRequired && !ctrl.selectAll }}">
        <md-item-template>
            <span>{{ item.display || item }}</span>
        </md-item-template>
        <md-not-found>
            No results.
        </md-not-found>
    </md-autocomplete>
</div>
<div class="label-wrapper">
    <label
            class="checkbox-label"
            ng-if="ctrl.selectAll !== null">
        <input
                type="checkbox"
                ng-model="ctrl.selectAll"
                ng-change="ctrl.checkSelectAll()">
        {{ ctrl.checkboxName ? ctrl.checkboxName : 'Select all' }}
    </label>
</div>

它基本上只是一个自定义输入字段,允许用户从列表中选择一个值或单击复选框以“选择所有”项目。选中复选框后,我不想再需要 md-autocomplete 字段。

最佳答案

如您在此 demo plnkr 中所见,它与 ng-required 一起工作得很好.

查看

<form name="myForm">
    <md-autocomplete 
        md-autoselect=true
        placeholder="What is your favorite place?"
        md-item-text="item.display"
        md-items="item in ctrl.items"
        md-menu-class="autocomplete-custom-template"
        md-min-length="2"
        md-delay="ctrl.throttle"
        md-search-text="ctrl.searchText"
        md-search-text-change="ctrl.searchTextChange(ctrl.searchText)"
        md-select-on-match=true
        md-match-case-insensitive=true
        md-selected-item-change="ctrl.selectedItemChange(item)"
        ng-required="ctrl.cond1 && !ctrl.cond2"
        md-selected-item="ctrl.selectedItem">

   {{ myForm.$error }}

   <div>
       <md-button type="submit">Submit</md-button>
   </div>
</form>

AngularJS Controller

myApp.controller('MyCtrl', function ($scope) {
    var vm = this;
    this.cond1 = true;
    this.cond2 = false;
});

关于javascript - 如何动态设置 md-autocomplete 的必填字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43226329/

相关文章:

javascript - 如何使用JS打印HTML中下拉框中选择的值

html - 使用 bootstrap 添加动态居中按钮

javascript - JQUERY PTTIMESELECT Timepicker 插件需要 Angular js 指令

javascript - Ionic + Angular 默认无法勾选ion-radio

javascript - 如何将相对路径设置为 "a href"?

javascript - 将 jQuery Signature Pad 与硬件捕获设备一起使用

javascript - 删除或销毁事件监听器

jquery - 全宽 - 正常高度 BG Img

javascript - jquery:更改输入标签颜色

javascript - 使用 Javascript 的 window.print 中的对齐问题