2014-06-23 8 views
18

Z jakichś powodów, nie mogę zmienić styl elementu przy użyciu następujących:nie można zmienić styl CSS w angularjs

angular.element("#element").style.height = 100px; 

Jestem pewien, że angular.element("#element") prace, jak zwraca element DOM . Plus, to działa:

angular.element("#element").addClass('something'); 

(Wszystko znalazłem jest o ngStyle ale nie sądzę, że jest to co szukam?)

powinienem użyć czegoś innego?

Jeśli tak, to: Co? Dlaczego .style.something nie działa?

+0

Jesteś pewien, że działa tak, jak opisujesz. Musisz ładować jQuery tak? – david004

Odpowiedz

41

Według the docs:

Uwaga: Wszystkie elementu kątowego zawsze są owinięte jQuery lub jqLite; nigdy nie są surowymi referencjami DOM.

Więc własnością .style nie jest dostępna bezpośrednio, ponieważ jest to własność zawiniętego HTMLElement.


Można użyć ivarni za podejście zdobyć na HTMLElement (angular.element(...)[0].style...) lub użyć jQuery/jqLite za .css() metody:

angular.element('#element').css('height', '100px'); 
+0

Dobrze próbuję użyć angular.element (el) .css ("- webkit-transform", "translate3d (200px, 0,0)") i jego nie działa w ogóle ... wydaje się, że jqlite nie parsuje "-" . –

+0

Właśnie odkryłem, że ważny jest problem. Nie wiem dlaczego –

+1

Nie działa dla mnie. Działa to: 'kątowy.element (document.querySelector (" # element ")). Css (" wysokość "," 100px ")'. –

10

Angular's element zwraca coś, co otula element DOM, a nie sam DOM. Dostęp do elementu bazowego można uzyskać podobnie jak w przypadku selektora JQuery.

angular.element("#element")[0].style.height = 100px; 

Zakłada to oczywiście, że masz jeden mecz, który powinieneś użyć podczas używania identyfikatora.

+2

Co? Nie dostaniesz "Wyszukiwanie elementów za pomocą selektorów nie jest obsługiwane przez jqLite! ..." – david004

+1

Nie, jeśli załadowałeś JQuery przed kątowym, co oczywiście zrobił, albo zadałby inne pytanie. – ivarni

+0

Zobacz https://docs.angularjs.org/api/ng/function/angular.element, "Aby użyć jQuery, po prostu załaduj go przed wywołaniem zdarzenia DOMContentLoaded". – ivarni

0

Jeśli używasz kątowa bez jQuery, to działa:

angular.element(document.querySelector("#element"))[0].style.height = "100px"; 

Przetestowałem to w aplikacji jonowej.

+1

To działa, ale dostajesz element dwa razy, jeden raz z '.element' i raz z' .querySelector' – Dementic