我有一个带有“ng-disabled”的 Angular 指令。似乎“禁用”属性仅在我的指令的链接阶段后才更新。可以修复吗?
查看此 JSBin举个例子。
当用 'disabled="{{expression}}"替换 'ng-disabled' 时它确实有效(但这不适用于旧浏览器,即浏览器): JSBin
谢谢!
最佳答案
看看 angular 的代码,ngDisabled 指令是这样工作的:它的链接函数注册了一个更改属性的 watch 。
因此,angular 将执行该链接函数(比您的指令优先级更高),然后执行您的链接函数,然后执行摘要以更改“禁用”属性。因此,调用链接函数时未设置该属性也就不足为奇了。
https://github.com/angular/angular.js/blob/master/src/ng/directive/attrs.js#L354
如果您在 $timeout() 调用中执行 console.log 调用,它将显示正确的 CSS 属性,因为 $timeout() 在下一个摘要时执行。
关于javascript - Angularjs - 指令上的 ng-disabled 执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787241/