我正在努力解决以下问题。我们有一个称为Deeplink的指令。它具有以下代码:
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>
我仅在此处显示相关信息,而不显示整个HTML或整个代码。无论如何,我正在为选择该属性而苦苦挣扎。在我的表单中,我有以下内容:
<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控件不会将其所需的错误传播回main指令元素。因此,我看不到验证错误。
当我写这篇文章的时候,我想我可以在我的表单中或在指令内部添加一个ng-form来解决这个问题。我真的不喜欢添加太多的ng-forms,但没有其他解决方案。
你怎么看?
答案 0 :(得分:0)
好吧,在我的表单中,我只是将div更改为ng-form,并且可以正常工作(原始表单加载除外-当我更改为某项然后更改为空选项时,它仅以红色显示,并带有错误)