代码之家  ›  专栏  ›  技术社区  ›  Naomi

内部控件的angularjs指令必需属性

  •  0
  • Naomi  · 技术社区  · 7 年前

    restrict: 'E',
    require: 'ngModel',
    scope: {
        smDropdown: '=smDeeplinkDropdown',
        settings: '&smDropdownSettings',
        onRefresh: '&smOnRefresh',
        onModelChange: "&?smOnChange",
        disable: "=?",
        valueRequired: "=?",
        hideNew: "=?",
        excludeValue : "=?"
    },
    templateUrl: 'app/templates/smDeeplinkDropdown',
    

    指令的模板如下:

    <div class="row input-group">
        <select name="deeplinkDropdown"
                class="form-control dropdown deeplinkDropdown"
                ng-disabled="disable"
                ng-required="valueRequired"
                data-ng-model="dropdownModel.key"
                data-ng-options="item.key as item.text disable when item.hidden for item in itemList | filter:ngOptionFilter"
                data-ng-change="modelChanged(dropdownModel.key)">
            <option value="">{{noneSelectedLabel}}</option>
        </select>
    

    <div data-sm-deeplink-dropdown="crud.metaData.vendors"
         data-ng-model="crud.model.vendorId"
    
         value-required="true"
         name="vendorId"
         id="vendorId"
         data-sm-dropdown-settings="crud.getVendorSettings()"
         data-sm-on-refresh="crud.refreshMetaData()">
    </div>
    <label class="field-validation-error control-label-error animate-show"
           ng-show="form.editPurchaseOrdersGeneralForm.vendorId.$error.required">
        @string.Format(Messages.isRequired, Labels.vendor)
    </label>
    

    我的问题是select控件没有将它所需的错误传播回主指令元素。所以,我不能真正看到我的验证错误。

    当我写这篇文章的时候,我想我可以在我的表单中或者在指令中添加一个ng表单来解决这个问题。我真的不喜欢添加太多的ng表单,但我看不到其他解决方案。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Naomi    7 年前

    好的,在我的表单中,我只是将div改为ng表单,这就起作用了(除了原始表单加载-当我改为something,然后改为empty选项时,它只显示为红色并带有我的错误)