[Representation] Handle edge cases

Handle edge cases (e.g. directive priorities, race conditions)
to ensure that mct-representation and mct-include display correctly
when added to or removed from the DOM.
This commit is contained in:
Victor Woeltjen 2015-10-28 15:57:47 -07:00
parent ea9f607bba
commit c5fcc5a558
3 changed files with 14 additions and 2 deletions

View File

@ -84,6 +84,9 @@ define(
// Use the included controller to populate scope
link: link,
// May hide the element, so let other directives act first
priority: -1000,
// Two-way bind key, ngModel, and parameters
scope: { key: "=", ngModel: "=", parameters: "=" }
};

View File

@ -236,6 +236,9 @@ define(
// Handle Angular's linking step
link: link,
// May hide the element, so let other directives act first
priority: -1000,
// Two-way bind key and parameters, get the represented domain
// object as "mct-object"
scope: {

View File

@ -83,11 +83,12 @@ define(
function populateElement(template) {
template(scope, function (innerClone) {
element.empty();
element.append(innerClone);
});
}
function applyTemplate(template) {
function applyTemplate(template, templateUrl) {
if (template) {
populateElement(template);
} else {
@ -99,7 +100,12 @@ define(
if (templateUrl !== activeTemplateUrl) {
if (templateUrl) {
addElement();
self.load(templateUrl).then(applyTemplate);
self.load(templateUrl).then(function (template) {
// Avoid race conditions
if (templateUrl === activeTemplateUrl) {
applyTemplate(template);
}
});
} else {
removeElement();
}