У меня есть простой AngularJS directive with a templateUrl. Директива предназначена для всплывающей подсказки.Создать директиву AngularJS, которая не сразу отображается?
- В настоящее время я добавляю скрытый элемент. Однако директива используется очень часто, поэтому сотен данных < -> Связывание DOM происходит, и страница замедляется до степени непригодности к использованию.
- Я хотел бы только загрузить шаблон и добавить элементы при наведении указателя мыши.
Reading the angular docs, there doesn't seem to be any way of making a directive delay rendering. Я что-то упускаю?
// 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)
}
});
}
}
}
Спасибо за ваш ответ! Я рассмотрел компиляцию $, и это решит вторую проблему того, как отображать всплывающее окно по требованию, но как я могу предотвратить немедленное отображение углов? – mikemaccana
Короче говоря, не объявляйте шаблон для своей директивы. Если вы это сделаете, Angular возьмет под контроль, когда он будет скомпилирован от вас (и скомпилируйте его спереди). В качестве альтернативы вы можете добавить разметку в качестве значения модуля 'angular.module ('myApp', []). Value ('popupMarkup', '
{{property}}
');' и ввести его в вашу функцию связывания. Или вы можете просто объявить эту разметку как переменную String внутри вашей директивы, если вы не хотите слишком наглядности. – tnunamak