2013-03-05 27 views
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

回答

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最近已合并,您的抢注者应该在未来版本的AngularJS中不使用$observe而工作。

-

有问题的演示将在最新版本的工作:1.1.3,你可以尝试(和改变angularjs网址1.1.3)。

+0

它适用于最新版本:1.1.3,谢谢你和PrimosK,这是一个非常令人困惑的问题:) – Freewind 2013-03-05 14:43:22

+1

我已经测试了你的普通工作。测试角1.2.23:“未知提供商:iAttrsProvider” – BigDong 2015-01-12 14:41:27

相关问题