我使用ng-options选择与列表绑定的元素。我有一个自定义指令,它将验证指令添加到select元素。此自定义指令编译select元素。编译select元素后,选项将重复。有没有办法在编译至少之前停止复制或清除它们?
在下面的代码中,元数据是一个自定义指令。在该指令中,我有编译($ el)($ scope)行。执行此行后,选择如下所示
请选择性别
男
女
男
女性
function ($scope, $el, $attr, $ngModel) {
if (!$ngModel) {
return;
}
var elementMetadata = JSON.parse($attr.metadata);
angular.forEach(elementMetadata.validators,
function (item) {
$el.attr(item.name, item.value);
});
$el.removeAttr('metadata');
$compile($el)($scope);
}

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<select name="gender" id="lstGender" ng-options="gender for gender in genderList track by gender" ng-model="fields.gender" metadata="{{template.gender}}">
<option value="">Please select gender</option>
</select>
&#13;
答案 0 :(得分:0)
将编译select元素移动到最后一个使用post
执行编译的功能 pre: function(scope, element) {
scope.values = [ 'male', 'female' ];
},
post: function() {
$compile(tElement)(scope);
}