[Templates] Allow only template property for containers

...to work around difficulties with transclusion using
templateLinker.
This commit is contained in:
Victor Woeltjen 2016-02-26 14:49:55 -08:00
parent e61711688e
commit 8581547a9c
3 changed files with 26 additions and 6 deletions

View File

@ -910,7 +910,24 @@ A capability's implementation may also expose a static method `appliesTo(model)`
which should return a boolean value, and will be used by the platform to filter which should return a boolean value, and will be used by the platform to filter
down capabilities to those which should be exposed by specific domain objects, down capabilities to those which should be exposed by specific domain objects,
based on their domain object models. based on their domain object models.
## Containers Category
Containers provide options for the `mct-container` directive.
The definition for an extension in the `containers` category should include:
* `key`: An identifier for the container.
* `template`: An Angular template for the container, including an
`ng-transclude` where contained content should go.
* `attributes`: An array of attribute names. The values associated with
these attributes will be exposed in the template's scope under the
name provided by the `alias` property.
* `alias`: The property name in scope under which attributes will be
exposed. Optional; defaults to "container".
Note that `templateUrl` is not supported for `containers`.
## Controls Category ## Controls Category
Controls provide options for the `mct-control` directive. Controls provide options for the `mct-control` directive.

View File

@ -319,7 +319,6 @@ define([
"key": "mctContainer", "key": "mctContainer",
"implementation": MCTContainer, "implementation": MCTContainer,
"depends": [ "depends": [
"templateLinker",
"containers[]" "containers[]"
] ]
}, },

View File

@ -42,7 +42,7 @@ define(
* @memberof platform/commonUI/general * @memberof platform/commonUI/general
* @constructor * @constructor
*/ */
function MCTContainer(templateLinker, containers) { function MCTContainer(containers) {
var containerMap = {}; var containerMap = {};
// Initialize container map from extensions // Initialize container map from extensions
@ -67,11 +67,9 @@ define(
var key = attrs.key, var key = attrs.key,
container = containerMap[key], container = containerMap[key],
alias = "container", alias = "container",
copiedAttributes = {}, copiedAttributes = {};
changeTemplate = templateLinker.link(scope, element);
if (container) { if (container) {
changeTemplate(container);
alias = container.alias || alias; alias = container.alias || alias;
(container.attributes || []).forEach(function (attr) { (container.attributes || []).forEach(function (attr) {
copiedAttributes[attr] = attrs[attr]; copiedAttributes[attr] = attrs[attr];
@ -79,6 +77,12 @@ define(
} }
scope[alias] = copiedAttributes; scope[alias] = copiedAttributes;
},
template: function (element, attrs) {
var key = attrs.key,
container = containerMap[key];
return container ? container.template : "";
} }
}; };
} }