Jak uzyskać element body
w dyrektywie kątowej? moim celem jest zrobienie tego, co robię z jquery $('body').innerWidth();
wewnątrz dyrektywy. Nie chcę używać jquery, ale kątowej wbudowanej implementacji jqlite.Angularjs - pobierz element wewnątrz dyrektywy
Odpowiedz
Jeśli chcesz uzyskać dostęp do elementu ciała od wewnątrz dyrektywy, która nakłada się na inny element, można skorzystać z usługi $document jak tak ..
app.directive("myDirective", function($document) {
return function(scope, element, attr) {
var bodyWidth = $document[0].body.clientWidth;
console.log("width of body is "+ bodyWidth);
};
});
<button my-directive>Sample Button</button>
Można też użyć metod DOM przemierzania dostarczane w jqLite (choć są one znacznie mniej wydajne niż oferowane przez jQuery). Na przykład można wykonać rekursywne wyszukiwanie przy użyciu metody angular.element.parent()
, aby znaleźć znacznik body.
Przepraszam, powinienem był wspomnieć. Moja dyrektywa znajduje się głęboko w etykiecie ciała. Czy jest możliwy dostęp do ciała, które może znajdować się nad drzewem (a nie dziecko elementu)? – bsr
tak, w twoim przykładzie, czy możliwe jest uzyskanie szerokości ciała wewnątrz miejsca, w którym zastosowałeś katalog na TABELI – bsr
Zaktualizowałem moją odpowiedź. – jessegavin
Jeszcze jeden wariant z użyciem realizację find()
który znajduje się w kątowym za jQLite:
app.directive("myDirective", function() {
return function(scope, element, attr) {
var body = angular.element(document).find('body');
console.log(body[0].offsetWidth);
};
});
Jeśli spojrzysz na kod kątowy pod '$ SnifferProvider' zobaczysz odniesienie do' document.body', gdzie 'dokument' po prostu jest' document = $ document [0] || {} ' – Izhaki
- 1. angularjs: ustawienie ostrości na wcześniej ukryty element wejściowy wewnątrz dyrektywy
- 2. angularjs element.innerHTML jest niezdefiniowany od wewnątrz dyrektywy
- 3. angularjs $ oglądać rozmiaru okna wewnątrz dyrektywy
- 4. Dyrektywy AngularJS nie działają
- 5. Dyrektywy dynamiczne w angularjs
- 6. tokenInput jak angularjs dyrektywy
- 7. Przełęcz element kątowy dyrektywy
- 8. Wywołanie funkcji dyrektywy potomnej z dyrektywy nadrzędnej w AngularJs
- 9. angularjs: nadawanych z dyrektywy do kontrolera
- 10. Angularjs: jak przekazywać zmienne zakresu do dyrektywy?
- 11. Zdarzenie kliknięcia wyzwalacza z dyrektywy angularjs
- 12. angularjs: aktualizowanie $ rootScope z dyrektywy
- 13. Angularjs - Przekaż argument do dyrektywy
- 14. AngularJS dostaje $ wydarzenie z dyrektywy
- 15. AngularJS: Użyj elementów dyrektywy w kontrolerze
- 16. Dekorowanie dyrektywy ng-click w AngularJs
- 17. Dyrektywy AngularJS przypisują dostęp do kontrolera
- 18. Tworzenie prywatnej funkcji wewnątrz dyrektywy
- 19. AngularJS - wzorce dyrektywy/usługi CRUD/kontrolera
- 20. AngularJS - zmiana wartości wejściowej dyrektywy atrybutu
- 21. Jak testować dyrektywy kontrolerów w AngularJS
- 22. AngularJS ocenia zmienną $ rootScope w szablonie dyrektywy
- 23. AngularJS - Ustawianie zmiennej zakresu od dyrektywy
- 24. Pobierz element wewnątrz elementu według klasy i ID - JavaScript
- 25. Jak przekazać wiele wartości do dyrektywy Angularjs?
- 26. AngularJS - kolejność zmian, z której tworzone są dyrektywy
- 27. Pobierz bieżący element
- 28. PHP: pobierz element tablicy
- 29. Pobierz tekst wewnątrz przycisku.
- 30. Czy można przekazać "wymagane" do dyrektywy AngularJS?
Chciałem, aby uzyskać dostęp do znacznika body zmienić klasę - ale kątowa ma powiązania, które powinny być używane - jej tylko, że dla mnie nie ma zasięgu z mojej zakopanej dyrektywy (modal box), ten modal ma klasę do wstawienia w tagu body, który możesz zrozumieć, jak to pomaga. Wolę używać powiązania z logiką w mojej dyrektywie .. ale od dyrektywy, w jaki sposób mogę uzyskać dostęp do odpowiedniego zakresu? To, że tutaj komentuję, nie jest odpowiedzią, ale niektórymi pomysłami dotyczącymi tego problemu. – landed