[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

@ -911,6 +911,23 @@ 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,
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 provide options for the `mct-control` directive.

View File

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

View File

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