2016-05-05 4 views
2

Я делаю заказную директиву. теперь я передаю строковые данные из атрибута chip-break и преобразует его в массив из метода ссылок. он работает идеально. но когда я получаю длину массива внутри 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 поэтому вы получаете длину == 11, потому что вы получаете число символов в строке «32, 13, 188».

Проверить этот пост для более подробной информации What is the difference between '@' and '=' in directive scope in AngularJS?

Edit:

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

yes @Chrish, но я преобразовываю строку в массив, так почему это рассматривается как строка во внутренней функции – Sandeep

Смежные вопросы