为什么我无法获得自定义指令的属性值?
问题描述:
的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
答
你需要$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)。
它适用于最新版本:1.1.3,谢谢你和PrimosK,这是一个非常令人困惑的问题:) – Freewind 2013-03-05 14:43:22
我已经测试了你的普通工作。测试角1.2.23:“未知提供商:iAttrsProvider” – BigDong 2015-01-12 14:41:27