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

Fre*_*ind 11 angularjs angularjs-directive angularjs-scope

angularjs代码:

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

你可以看到scope: { myId: '@' }指令中有一个.

和HTML代码:

<div test my-id='123'></div>
Run Code Online (Sandbox Code Playgroud)

你可以看到我定义了一个my-id='123'.

我希望该指令会提醒123,但它会发出警报undefined.我的错误在哪里?

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

pko*_*rce 11

您需要$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最近被合并,你的plunker应该可以$observe在未来版本的AngularJS中使用.

-

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