add t-ref directive

This commit is contained in:
Géry Debongnie
2019-01-21 15:46:29 +01:00
parent 64557ae999
commit 9be5cc1760
6 changed files with 53 additions and 15 deletions
+12 -1
View File
@@ -100,6 +100,7 @@ export default class QWeb {
ifDirective,
callDirective,
onDirective,
refDirective,
widgetDirective
].forEach(d => this.addDirective(d));
}
@@ -653,6 +654,17 @@ const onDirective: Directive = {
}
};
const refDirective: Directive = {
name: "ref",
priority: 95,
atNodeCreation({ ctx, node, nodeID }) {
let ref = node.getAttribute("t-ref");
ctx.addLine(`p${ctx.parentNode}.hook = {
create: (_, n) => context.refs['${ref}'] = n.elm,
}`);
}
};
const widgetDirective: Directive = {
name: "widget",
priority: 100,
@@ -671,7 +683,6 @@ const widgetDirective: Directive = {
);
ctx.addLine(`context._TEMP.push(def${defID})`);
// split into extra directive?
let ref = node.getAttribute("t-ref");
if (ref) {
ctx.addLine(`context.refs['${ref}'] = _${widgetID}`);