AngularJS: Удалить директиву с более низким приоритетом? - PullRequest
0 голосов
/ 08 апреля 2020

Я пишу директиву, которая может программно удалить 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 все еще работает ...

...