2015-09-26 2 views
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); в моей консоли браузера появляется следующий контекст:

Screenshot 0 Но я не могу удалить вариант со значением «? undefined: undefined?»

ответ

0

Кажется, я нашел решение на мой собственный вопрос:

Чтобы правильно заполнить поле выбора необходимо использовать нг-параметры вместо нг-повтор.

Я закончил с использованием следующим:

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

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

0

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

$scope.user.encryption="no_encryption" 

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

angular.module('app').directive('removeFirst',function(){ 
    return{ 
    link:function(scope,element) { 
     element.find('option')[0].remove(); 
    }, 
    } 
}) 
Смежные вопросы