6
Mam prosty AngularJS directive with a templateUrl. Dyrektywa dotyczy etykiety narzędzi.Utwórz dyrektywę AngularJS, która nie jest natychmiast wyświetlana?
- Obecnie dołączam ukryty element. Jednak dyrektywa jest używana bardzo często, więc setki danych pojawiają się, a strona zwalnia aż do momentu, w którym staje się bezużyteczna.
- Chciałbym tylko załadować szablon i dołączyć elementy po kliknięciu myszką.
Reading the angular docs, there doesn't seem to be any way of making a directive delay rendering. Czy czegoś brakuje?
// Tooltip directive
return function(){
return {
templateUrl: 'someTemplate.html',
replace: false, // Append our tooltip, rather than replace the element's contents.
link: function (scope, element, attrs) {
$element.on({
mouseenter: function() {
// Would like to render, and set up bindings, here (my question)
},
mouseleave: function() {
// Destroy rendered element here (simple stuff, not my question)
}
});
}
}
}
Dzięki za odpowiedź! Zastanowiłem się nad kompilacją $, a to rozwiąże drugi problem, w jaki sposób renderować popup na żądanie, ale jak mogę zapobiec natychmiastowemu renderowaniu Angulara? – mikemaccana
Krótko mówiąc, nie zadeklaruj szablonu dla swojej dyrektywy. Jeśli to zrobisz, Angular przejmie kontrolę nad tym, kiedy zostanie skompilowany z dala od ciebie (i skompiluje go z góry). Alternatywnie można dodać znacznik jako wartość modułu 'angular.module ('myApp', []). Value ('popupMarkup', '
{{property}}
');' i wprowadzić go w funkcję łączenia. Lub możesz po prostu zadeklarować ten znacznik jako zmienną String w twojej dyrektywie, jeśli nie chcesz się zbytnio ochotę. – tnunamak