angularjs:在向链路功能记录范围属性显示未定义(angularjs : logging sc

2019-08-08 11:20发布

我有这个基本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