Ng-class не удаляет класс, который был там до того, как angular был загружен

Еще до 72 часов со скоростью angular. Некоторое время я использовал нокаут, я должен сказать, что это интересно. Мой вопрос прямо сейчас связан с ng-классом.

Скажем, у меня есть следующее:

<div class="myClass" ng-class="{myClass: false}">

Когда angular bootstraps, он не удаляет атрибут myClass, который был там ранее представлен. Я ожидал этого, поскольку это то, что связывает ко css. Кажется, что angular удаляет только класс, если angular был тем, кто его там разместил.

Итак, есть ли общее обходное решение для этого? Помимо создания настраиваемой директивы?

Ответы

Ответ 1

Поскольку вы используете только Angular для формы и нуждаетесь в том, чтобы класс был активен в элементах формы до Angular bootstraping, похоже, что директива может быть лучшим способом.

Следующая директива удалит указанный класс из элемента, на который он ссылается, когда директива привязана к Angular (это почти то же самое, что и при нажатии ngClass):

.directive('removeClass', function(){
    return {
        restrict: 'A',
        link: function(scope,element, attrs){
            element.removeClass(attrs.removeClass);
        }
    };
});

Используется так:

<div class="oldClass" remove-class="oldClass" ng-class="{newClass: true}">stuff</div>

демонстрационная скрипка