ионная директива удалить первую опцию из выбора

0

Я пытаюсь сделать директиву, которая должна удалить первый вариант выбора.

Я использую этот html для создания окна выбора:

 <select remove-whitespace ng-model="user.encryption">                                      
      <option ng-repeat="r in selectButtons" title="{{r.text}}" ng-selected="$first" value="{{r.value}}">{{r.text}}</option>                            
 </select>

Эта часть кода находится в моем контроллере, чтобы заполнить поле выбора в представлении:

    $scope.selectButtons = [
        {text: "Clear-Text", value: "no_encryption"},
        {text: "MD5", value: "md5_encryption"},
        {text: "SHA1", value: "sha1_encryption"},
    ];

Я использую это как свою директиву:

.directive("removeWhitespace", function () {
    return{
        require: 'ngModel',
        link: function (scope, element, attributes, ngModel) {            
            console.log(element.context); 
        }
    }
});

Когда я делаю console.log(element.context); в моей консоли браузера появится следующий контекст:

Изображение 174551 Однако я не могу удалить параметр со значением "? Undefined: undefined?"

Теги:
select
directive
ionic

2 ответа

0

Первый элемент (? Udefined: undefined?) Существует потому, что текущее значение ng-модели не соответствует ни одному из параметров. Он уйдет сам по себе, если вы сделаете что-то подобное в своем контроллере:

$scope.user.encryption="no_encryption"

Чтобы полностью ответить на вопрос, вот простая директива, которая удаляет первый вариант выбора, хотя я бы посоветовал не использовать ничего подобного, потому что было бы лучше использовать ng-options, возможно, в сочетании с фильтром

angular.module('app').directive('removeFirst',function(){
  return{
    link:function(scope,element) {
      element.find('option')[0].remove();
    },
  }
})
0

Кажется, я нашел решение своего вопроса:

Чтобы правильно заполнить поле выбора, вам нужно использовать ng-options вместо ng-repeat.

В итоге я использовал следующее:

     <select ng-model="selectButton"
      ng-options="r.text for r in selectButtons">                                
     </select>

Это будет заполнять selectbox без пробелов. И директива больше не нужна.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню