2015-09-26 93 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(); 
    }, 
    } 
}) 
相關問題