选项中的ng-options复制选项

时间:2018-02-19 17:08:49

标签: javascript angularjs

我使用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;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

将编译select元素移动到最后一个使用post

执行编译的功能
          pre: function(scope, element) {
            scope.values =  [ 'male', 'female' ];
          },
          post: function() {
            $compile(tElement)(scope);
          }

codepen- https://codepen.io/nagasai/pen/MQQLbB

相关问题