Невозможно изменить стиль CSS в AngularJS
По некоторым причинам я не могу изменить стиль элемента, используя следующее:
angular.element("#element").style.height = 100px;
Я уверен, что angular.element("#element")
работает, так как он возвращает элемент DOM. Кроме того, это работает:
angular.element("#element").addClass('something');
(Все, что я нашел, это ngStyle, но я не думаю, что это то, что я ищу?)
Должен ли я использовать что-то еще?
Если да:
Какие?
Почему .style.something
не работает?
Ответы
Ответ 1
В соответствии с документами:
Примечание: все ссылки на элементы в Angular всегда завернуты в jQuery или jqLite; они никогда не являются сырыми DOM-ссылками.
Таким образом, свойство .style
недоступно напрямую, так как оно является свойством wrapped HTMLElement
.
Вы можете использовать подход ivarni, чтобы получить HTMLElement (angular.element(...)[0].style...
) или использовать метод jQuery/jqLite .css()
:
angular.element('#element').css('height', '100px');
Ответ 2
Angular element
возвращает то, что обертывает элемент DOM, а не сам элемент DOM.
Вы можете получить доступ к базовому элементу так же, как и с помощью селектора JQuery.
angular.element("#element")[0].style.height = 100px;
Это, конечно, предполагает, что у вас есть одно совпадение, которое вы должны использовать при использовании идентификатора.
Ответ 3
Если вы используете Angular без jQuery, это работает:
angular.element(document.querySelector("#element"))[0].style.height = "100px";
Я тестировал это в ионном приложении.