我有这个基本plnkr它只是实现了一个基本的“Hello,X”指令。 在链接功能,我记录scope.name
但我得到undefined
? 为什么会这样呢? 不应该将其记录的值name
属性在控制台?
Answer 1:
这是一个已知的“问题”,其中的插值@
属性联函数被调用后会发生。 有一个拉要求开放改变这个问题,但如果这个人会被合并,目前尚不清楚。
在此期间获得的插值的方式是通过观察,像这样的属性:
attrs.$observe('hello', function(changedValue){
console.log(scope.name);
});
而普拉克: http://plnkr.co/edit/Lnw6LuadTLhhcOTsPC8w?p=preview
所以,在这一天结束,这是AngularJS的,可能在未来改变有点混乱行为。
Answer 2:
帕维尔是正确的( https://stackoverflow.com/a/14552200/287070 ),但我想补充一点,问题是,任何包含属性{{}}插值将链接功能时设定在ATTRS参数空作为第一个$消化,因为编译尚未运行,以评估这些。
那@绑定在链接功能无效的事实仅仅是一个此症状。
目前还没有真正的解决,因为我们不能启动在编译过程中的中间运行$消化。 所以$观察(或$观看)是获得这些值的保持的唯一途径。
Answer 3:
对于那些在2015年谁是阅读这篇文章,请注意道路角柄"@"
的属性发生了变化。 角1.2起,内插之前,该连接功能的调用发生。
有关这个主题的一个很好的职位是在座 。
文章来源: angularjs : logging scope property in directive link function displays undefined