2016-05-05 3 views
2

私はカスタムディレクティブを作成します。今度はチップスブレイクの文字列データを渡して、リンクメソッドから配列に変換します。それは完璧に動作します。しかし、私は配列の長さを得るときng-keydownメソッドそれは異なっています。私を助けてください。先進のおかげで:配列の長さ内部関数が異なる

HTML

<input-chips chips-break="32, 13, 188" style="width:80%"></input-chips> 

JS

var app = angular.module("myApp", []); 
    app.directive("inputChips", inputChipsFun); 

    function inputChipsFun(){ 
     return{ 
     restrict : 'EA', 
     scope : { 
      chipsBreak : "@" 
     }, 
     template: '<div class="chips"><div class="chips-item"></div><input type="text" ng-keydown="inputKeyDown($event, false)"/></div>', 
     link : function(scope, elem, attr){ 
      scope.chipsBreak = scope.chipsBreak.split(","); 
      console.log("Length of Chips Break First Time = "+scope.chipsBreak.length); 

      scope.inputKeyDown = function($event, is_blur){ 
      console.log("Length of Chips Break Key Press = " + scope.chipsBreak.length); 
      } 


     } 
     }; 
    } 

このリンクを参照してください。https://plnkr.co/edit/RpDwaqjS81DZlZFEzdj2?p=preview が開い要素コンソールを検査し、いくつかのものを入力し、その差

答えて

1

参照あなたは '@'を使用してstを取得しますあなたは32,13,188文字列で文字カウントを取得するので、長さ== 11になるのはこのためです。

チェックこの記事の詳細について What is the difference between '@' and '=' in directive scope in AngularJS?

編集:

link : function(scope, elem, attr){ 
     var x = scope.chipsBreak.split(","); 
     console.log("Length of Chips Break First Time = "+scope.chipsBreak.length); 

     scope.inputKeyDown = function($event, is_blur){ 
     console.log("Length of Chips Break Key Press = " + x.length); 
     } 
    } 

あなたはscope.chipsBreak = scope.chipsBreak.split(",")あなたscope.inputKeyDownをやる場合は(関数である)文字列ですscope.chipsBreakの初期値を取得します。

+0

はい@Chrishですが、文字列を配列に変換するので、なぜ内部関数の文字列として扱われますか – Sandeep

関連する問題