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表单,但我看不到其他解决方案。