2015-09-26 97 views
0

我试图做一个指令,应该删除选择的第一个选项。离子指令从选择中删除第一个选项

我使用这个网站产生选择框:

<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 但是,我似乎无法删除值为“?undefined:undefined?”的选项。

回答

0

看来我已经找到了解决自己的问题:

要正确填写您需要使用NG选项,而不是NG重复一个选择框。

我最终使用下列内容:

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

这将填充一个选择框没有空格。并且该指令不再需要。

0

第一个元素(?udefined:undefined?)存在,因为ng-model的当前值与任何选项都不匹配。如果你做这样的事情在你的控制器它会自行消失:

$scope.user.encryption="no_encryption" 

要完全回答这个问题,这里是一个简单的指令,删除一个选择的第一选择,但我建议不要使用任何类似的东西,因为它会更好地使用ng-options可能结合一个过滤器

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