2016-03-04 2 views
0

У меня есть эта странная проблема с привязкой данных к директиве. это, как я объявляю свою директиву:данные привязки в директиве возвращают несогласованные значения

<my-directive data="myArray"></my-directive> 

моя директива код выглядит следующим образом:

angular.module('ngApp') 
.directive('myDirective', function() { 
    return { 
     scope:{ 
      data: '=' 
     }, 
     template: '<div steps="data.length"></div>', 
     restrict: 'E', 
     link: function postLink(scope, element, attrs) { 
      console.log(scope); 
      console.log(scope.data); 
     } 
    }; 
}); 

в первом журнале, свойство данных верно: screenshot of console.log output но second log не определена.

любая идея почему?

+0

Можете ли вы предоставить JSFiddle или Plunkr, чтобы продемонстрировать проблему? – Matheno

ответ

0

вот ваше решение:

<my-directive data-example="myArray"></my-directive> 

вы всегда должны называть переменные data-<name>. Это гораздо легче поддерживать и это предотвратить ошибки с ключевыми словами, как этот;)

angular.module('ngApp') 
.directive('myDirective', function() { 
    return { 
     scope:{ 
      data: '=example' 
     }, 
     template: '<div steps="data.length"></div>', 
     restrict: 'E', 
     link: function postLink(scope, element, attrs) { 
      console.log(scope); 
      console.log(scope.data); 
     } 
    }; 
}); 

я надеюсь, что это поможет,

Живой пример: JsFiddle

+0

извините, все тот же. scope.data не определено – Marcin

0

благодаря @hadiJZ и @Unex я фигурировали это:

Моя директива была вложена в другую директиву. но родительская директива использовала функцию ссылки для логики, так как при создании у нее не было дочерних директив.

поэтому перемещение логики на контроллер решило мою проблему. Я понял это, когда я добавил $ timeout к дочерней директиве, и журнал (scope.data) был прав.

+0

если вы можете положить здесь полный код. благодаря –

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