mirror of
https://github.com/nasa/openmct.git
synced 2025-01-02 03:16:41 +00:00
[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:
parent
ea9f607bba
commit
c5fcc5a558
@ -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: "=" }
|
||||
};
|
||||
|
@ -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: {
|
||||
|
@ -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();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user