Angularjs - ng-禁用指令的执行顺序
Angularjs - ng-disabled execution order on a directive
我有一个带有 'ng-disabled' 的 Angular 指令。 "disabled" 属性似乎仅在我的指令的链接阶段后才更新。可以修复吗?
查看此 JSBin 示例。
将 'ng-disabled' 替换为 'disabled="{{expression}}" 时它确实有效(但这不适用于旧浏览器,即浏览器):
JSBin
谢谢!
查看 angular 的代码,ngDisabled 指令是这样工作的:它的 link 函数注册了一个更改属性的手表。
所以,angular 将执行那个 link 函数(比你的指令优先级更高),然后是你的 link 函数,然后做一个摘要,这将改变 "disabled" 属性。因此,调用 link 函数时未设置属性也就不足为奇了。
https://github.com/angular/angular.js/blob/master/src/ng/directive/attrs.js#L354
如果您在 $timeout() 调用中执行 console.log 调用,它将显示正确的 CSS 属性,因为 $timeout() 在下一个摘要时执行。
我有一个带有 'ng-disabled' 的 Angular 指令。 "disabled" 属性似乎仅在我的指令的链接阶段后才更新。可以修复吗?
查看此 JSBin 示例。
将 'ng-disabled' 替换为 'disabled="{{expression}}" 时它确实有效(但这不适用于旧浏览器,即浏览器): JSBin
谢谢!
查看 angular 的代码,ngDisabled 指令是这样工作的:它的 link 函数注册了一个更改属性的手表。
所以,angular 将执行那个 link 函数(比你的指令优先级更高),然后是你的 link 函数,然后做一个摘要,这将改变 "disabled" 属性。因此,调用 link 函数时未设置属性也就不足为奇了。
https://github.com/angular/angular.js/blob/master/src/ng/directive/attrs.js#L354
如果您在 $timeout() 调用中执行 console.log 调用,它将显示正确的 CSS 属性,因为 $timeout() 在下一个摘要时执行。