Подтвердить что ты не робот

Почему я не могу получить значение атрибута моей настраиваемой директивы?

Код угловой последовательности:

app.directive('test', function(){
  return {
    restrict: 'A',
    scope: {
      myId: '@'
    },
    link: function(scope) {
      alert(scope.myId);
    }
  }
});

Вы можете видеть, что в директиве есть scope: { myId: '@' }.

И html-код:

<div test my-id='123'></div>

Вы можете видеть, что я определил a my-id='123'.

Надеюсь, что директива будет предупреждать 123, но она предупредила undefined. Где моя ошибка?

PS: вот живая демонстрация: http://plnkr.co/edit/sL69NqWC70Qfwav5feP2?p=preview

4b9b3361

Ответ 1

Вам нужны атрибуты $observe (как описано в разделе "Атрибуты" http://docs.angularjs.org/guide/directive), чтобы получить правильное значение интерполированные атрибуты.

Вот рабочий план: http://plnkr.co/edit/NtIHmdoO7IAEwE74ifB5?p=preview

Это, по существу, дубликат свойства angularjs: logging scope в функции директивной ссылки показывает undefined. Следует также отметить, что PR https://github.com/angular/angular.js/pull/1555 был недавно объединен, и ваш плункер должен работать без использования $observe в будущих версиях AngularJS.

-

Демонстрация, о которой идет речь, обрабатывается в последней версии: 1.1.3, вы можете попробовать ее (и изменить url angularjs на 1.1.3).