为什么我不能获得自定义指令的属性值?

时间:2013-03-05 06:45:41

标签: angularjs angularjs-directive angularjs-scope

angularjs代码:

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

您可以看到指令中有scope: { myId: '@' }

和html代码:

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

您可以看到我定义了my-id='123'

我希望该指令会提醒123,但它会提醒undefined。我的错误在哪里?

PS:这是一个现场演示:http://plnkr.co/edit/sL69NqWC70Qfwav5feP2?p=preview

1 个答案:

答案 0 :(得分:11)

您需要$observe个属性(如http://docs.angularjs.org/guide/directive的“属性”部分所述)才能获得插值属性的正确值。

这是一个有效的插件:http://plnkr.co/edit/NtIHmdoO7IAEwE74ifB5?p=preview

这基本上与angularjs : logging scope property in directive link function displays undefined重复。还应该注意的是,最近合并了PR https://github.com/angular/angular.js/pull/1555,并且您的plunker应该在AngularJS的未来版本中不使用$observe而工作。

-

有问题的演示版采用最新版本:1.1.3,您可以尝试(并将angularjs url更改为1.1.3)。