11

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

4

1 回答 1

11

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

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

这本质上是angularjs 的重复:指令链接函数中的日志范围属性显示 undefined。还应该注意的是,最近合并了 PR https://github.com/angular/angular.js/pull/1555$observe ,您的 plunker 应该可以在不使用AngularJS 的未来版本的情况下工作。

--

有问题的演示在最新版本中工作:1.1.3,您可以尝试一下(并将 angularjs url 更改为 1.1.3)。

于 2013-03-05T11:17:50.903 回答