2016-03-22 7 views
0

は、ここで私がやっているかの一般的な考えです選択が変更されます。それは空のオプションを作成しているので、空のオプションを生成してそれをデフォルトにする代わりに、既存のオプションを事前に選択するようにはできません。カスタム選択ディレクティブ生成空のオプション

myapp.directive('changeGroup', function() { 
    return { 
     restrict: 'A', 
     require: "ngModel", 
     scope: { }, 
     controller: function($scope) { 
      $scope.change_group = 0; 
     }, 
     link: function(scope, element, attrs, ngModel) {    
      ngModel.$viewChangeListeners.push(function() { 
       console.log('changed'); 
      }); 
     } 
    }; 
}); 

ページを読み込むと、希望のオプション(0)が1秒間点滅して空のオプションに戻ります。

これは、空のオプション角度を挿入した後、好きなものを選択ルックスです:それは新しい分離株のスコープを作成し、私はあなたがあなたのchange_groupスコープ変数を失っていると思うよう

<select class="form-control ng-pristine ng-valid ng-isolate-scope ng-touched" ng-model="change_group" change-group=""> 
    <option value="? undefined:undefined ?"></option> 
    <option value="0">Public</option> 
    <option value="1">xil3</option> 
</select> 
+0

ディレクティブコントローラの代わりにリンク関数の値を設定するとどうなりますか? – Lex

+0

コントローラでのように、ちらつきさえしません。それを設定しようとしているようには見えません。 – xil3

+0

空のオプションが挿入された後、選択がどのように見えるかを説明するために私の質問が更新されました。 – xil3

答えて

1

文字列に初期化します。数字ではありません。

また、スコープは使用しません。スコープを分離しない。

angular.module("app",[]).directive('changeGroup', function() { 
    return { 
     restrict: 'A', 
     require: "ngModel", 
     //Do not use isolate scope 
     //scope: {}, 
     controller: function($scope,$element) { 
      //Initialize to string 
      $scope.change_group = '1'; 
      //Not to a number 
      //$scope.change_group = 1; 
     }, 
     link: function(scope, element, attrs, ngModel) {    
      ngModel.$viewChangeListeners.push(function() { 
       console.log('changed'); 
      }); 
     } 
    }; 
}); 

DEMO on JSFiddle

1

scope: {}を削除します。

+0

私はそれを削除しましたが、それでも同じことをやっています。 – xil3

+0

ええ、奇妙です。私はそれをし、それは働き始めた。私はJSFiddleでテストしていました。 – Lex

+0

あなたのJSFiddleを見ることはできますか? – xil3

関連する問題