Wie erhalten Sie body
Element in Winkelanweisung? Mein Ziel ist es, zu tun, was man mit jquery $('body').innerWidth();
innerhalb der Direktive tun. Ich möchte nicht jQuery, sondern eckige integrierte jqlite-Implementierung verwenden.Angularjs - get Körperelement innerhalb der Direktive
Antwort
Wenn Sie das Körperelement zugreifen müssen innerhalb einer Richtlinie, die auf einem anderen Element angelegt wird, können Sie die Verwendung des $document Dienst wie so ..
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>
Sie können auch verwenden, um die Methoden DOM Traversal machen können in jqLite bereitgestellt (obwohl sie viel weniger mächtig sind als das, was jQuery anbietet). Sie können beispielsweise eine rekursive Suche mit der Methode angular.element.parent()
durchführen, um das body-Tag zu suchen.
Entschuldigung, hätte ich erwähnen sollen. Meine Anweisung ist tief in Body-Tags. Ist es möglich, auf den Körper zuzugreifen, der weit über dem Baum liegt (kein Kind des Elements) – bsr
Also, in Ihrem Beispiel, ist es möglich, die Breite des Körpers innerhalb wo Sie das Verzeichnis auf TABELLE – bsr
Ich aktualisierte meine Antwort. – jessegavin
Eine weitere Variation mit der find()
Implementierung, die in Winkeln des jQLite enthalten ist:
app.directive("myDirective", function() {
return function(scope, element, attr) {
var body = angular.element(document).find('body');
console.log(body[0].offsetWidth);
};
});
Wenn Sie sich den Winkelcode unter '$ SnifferProvider' ansehen, sehen Sie einen Verweis auf' document.body', wobei 'document' einfach' document = $ document [0] || ist {} ' – Izhaki
- 1. Angularjs erhalten Formular Feldgültigkeit innerhalb der Direktive
- 2. AngularJS Direktive für get Element ID
- 3. AngularJs Direktive, die neue Direktive mit Datenobjekt innerhalb
- 4. Get Element Elternhöhe innerhalb Direktive in AnguarJS
- 5. Eckig. Wie kompiliere Direktive innerhalb der Direktive?
- 6. Append-Kind-Direktive innerhalb der Eltern-Direktive
- 7. Angularjs ng-klick innerhalb der Direktive. ControllerAs Verbindungsproblem
- 8. Was ist Bereich innerhalb der Direktive tut in AngularJS
- 9. AngularJS - Erlaubnis Direktive
- 10. angularjs click -Ereignis in der ngBindHtml-Direktive
- 11. Rendern Sie eine Direktive innerhalb einer anderen Direktive (innerhalb der Repeater Vorlage)
- 12. AngularJS TypeScript Direktive Link-Funktion
- 13. Dynamisch eine Direktive in AngularJS innerhalb von Gridster hinzufügen
- 14. AngularJS Direktive Isolierter Bereich innerhalb verschachtelter ng-transclude
- 15. So ändern Sie den Bereich innerhalb einer Direktive in AngularJs
- 16. Unit Testing Angularjs Direktive
- 17. AngularJS modal Window Direktive
- 18. AngularJS Direktive watch validity
- 19. Datenbindung in AngularJs Direktive
- 20. AngularJs create templates Direktive
- 21. angularjs Direktive heißt nicht
- 22. AngularJS - Inhalt der geschachtelten Attribut-Direktive umwandeln
- 23. Erfordern Elternkomponente in der Direktive AngularJS 1.5
- 24. Arbeitsbeispiel der AngularJS und Bootstrap DatePicker Direktive?
- 25. Optionales Ausdrucksattribut in der AngularJS-Direktive
- 26. angularjs: eine Bereichsvariable aus der Direktive setzen
- 27. Controller-Bereichswert aus der Direktive ändern AngularJS
- 28. AngularJS: Minification Problem in der Direktive
- 29. Funktioniert die Funktion nicht innerhalb der Direktive?
- 30. Erstellen einer privaten Funktion innerhalb der Direktive
ich Zugriff auf den Body-Tag bekommen wollte die Klasse zu ändern - aber Angular hat Bindungen, die verwendet werden sollten - es ist nur, dass für mich ist der Umfang nicht von meiner vergrabenen Direktive (eine Modal-Box) dieses Modal hat eine Klasse in den Body-Tag einfügen, die Sie verstehen können, wie das hilft. Ich bevorzuge eine Bindung aus der Logik in meiner Direktive..aber von der Direktive wie kann ich auf den richtigen Bereich zugreifen? Dass ich hier Stellung nehme, ist keine Antwort, sondern einige Ideen zu diesem Problem. – landed