Я пишу директиву, которая может программно удалить ng-disabled
(например, когда текущий пользователь не имеет прав на редактирование, удалите ng-disabled
и добавьте непосредственно атрибут stati c disabled
.)
Я прочитал официальный do c о $ compile , там написано, что я могу указать priority
, чтобы определить порядок компиляции. Исходный код последней AngularJS 1.7.9 показывает, что приоритет ngDisabled
равен 100
, поэтому я написал следующее:
app.directive('removeNgDisabled', function ($compile) {
return {
priority: 101, // The priority of ngDisabled is 100
compile: function ($el, $attrs) {
const el = $el[0]
el.removeAttribute('ng-disabled') // ng-disabled should be removed before it is compiled... isn't it?!
}
}
})
<input ng-model="foo" ng-disabled="true" remove-ng-disabled=""/>
Я не знаю, где я могу ошибаться, ng-disabled
действительно исчез из DOM, но ng-disabled
все еще работает ...