Angularjs - 指令上的ng-disabled执行顺序

时间:2015-02-28 21:37:46

标签: javascript angularjs angularjs-directive

我正在使用一个带有'ng-disabled'的Angular指令。似乎“禁用”属性仅在我的指令的链接阶段之后才更新。可以修复吗?

有关示例,请参阅此JSBin

将'ng-disabled'替换为'disabled =“{{expression}}时,它确实有效(但这对旧的浏览器不起作用): JSBin

谢谢!

1 个答案:

答案 0 :(得分:2)

查看角度代码,ngDisabled指令以这种方式工作:其链接函数注册一个更改属性的手表。

因此,angular将执行该链接功能(比你的指令更高的优先级),然后你的链接功能,然后做一个摘要,这将改变"禁用"属性。因此,调用链接函数时未设置属性也就不足为奇了。

https://github.com/angular/angular.js/blob/master/src/ng/directive/attrs.js#L354

如果你在$ timeout()调用中执行console.log调用,它将显示正确的CSS属性,因为$ timeout()在下一个摘要中执行。