[Representation] Hide elements without transclusion

This commit is contained in:
Victor Woeltjen
2015-10-28 15:29:57 -07:00
parent ab008ae497
commit bcc42d705e
3 changed files with 29 additions and 47 deletions

View File

@ -60,33 +60,31 @@ define(
* @returns {Function} a function which can be called with a template
* URL to switch templates, or `undefined` to remove.
*/
TemplateLinker.prototype.link = function (scope, element, transclude) {
var originalElement = element,
activeElement = element,
TemplateLinker.prototype.link = function (scope, element) {
var activeElement = element,
activeTemplateUrl,
comment = this.$compile('<!-- hidden mct element -->')(scope),
self = this;
function removeElement() {
if (activeElement !== originalElement) {
activeElement.replaceWith(originalElement);
activeElement = originalElement;
if (activeElement !== comment) {
activeElement.replaceWith(comment);
activeElement = comment;
}
}
function replaceElement(clone, template) {
activeElement.replaceWith(clone);
activeElement = clone;
function replaceElement(template) {
activeElement.replaceWith(element);
activeElement = element;
activeElement.empty();
template(scope, function (innerClone) {
clone.append(innerClone);
element.append(innerClone);
});
}
function applyTemplate(template) {
if (template) {
transclude(function (clone) {
replaceElement(clone, template);
});
replaceElement(template);
} else {
removeElement();
}
@ -103,6 +101,8 @@ define(
}
}
removeElement();
return changeTemplate;
};