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


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


4180
2018-03-05 06:45


起源



答案:


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

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

这基本上是重复的 angularjs:指令链接函数中的日志记录范围属性显示为undefined。还应该注意PR https://github.com/angular/angular.js/pull/1555 最近合并了你的plunker应该没有使用 $observe 在AngularJS的未来版本中。

-

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


11
2018-03-05 11:17



它适用于最新版本:1.1.3,谢谢你和PrimosK,这是一个非常令人困惑的问题:) - Freewind
我测试了你的插件,工作。测试角度为1.2.23:“未知提供者:iAttrsProvider” - BigDong


答案:


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

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

这基本上是重复的 angularjs:指令链接函数中的日志记录范围属性显示为undefined。还应该注意PR https://github.com/angular/angular.js/pull/1555 最近合并了你的plunker应该没有使用 $observe 在AngularJS的未来版本中。

-

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


11
2018-03-05 11:17



它适用于最新版本:1.1.3,谢谢你和PrimosK,这是一个非常令人困惑的问题:) - Freewind
我测试了你的插件,工作。测试角度为1.2.23:“未知提供者:iAttrsProvider” - BigDong