[IMP] qweb/components: remove t-ref on components

Refs to component expose a lot of implementation details that should be
private to parents. Parent to child communication should go through
props.
This commit is contained in:
Samuel Degueldre
2021-11-10 08:18:25 +01:00
committed by Aaron Bohy
parent df2d6b6a0e
commit c03042b44d
8 changed files with 73 additions and 142 deletions
+2 -4
View File
@@ -261,8 +261,7 @@ export class QWebCompiler {
return block;
}
insertBlock(expression: string, block: BlockDescription, ctx: Context): string | null {
let id: string | null = null;
insertBlock(expression: string, block: BlockDescription, ctx: Context): void {
let blockExpr = block.generateExpr(expression);
const tKeyExpr = ctx.tKeyExpr;
if (block.parentVar) {
@@ -271,7 +270,7 @@ export class QWebCompiler {
keyArg = `${tKeyExpr} + ${keyArg}`;
}
this.addLine(`${block.parentVar}[${ctx.index}] = withKey(${blockExpr}, ${keyArg});`);
return id;
return;
}
if (tKeyExpr) {
@@ -283,7 +282,6 @@ export class QWebCompiler {
} else {
this.addLine(`let ${block.varName} = ${blockExpr};`);
}
return id;
}
generateCode(): string {
+2 -5
View File
@@ -302,11 +302,8 @@ function parseDOMNode(node: Element, ctx: ParsingContext): AST | null {
if (tagName === "pre") {
ctx = { inPreTag: true };
}
let ref = null;
if (node.hasAttribute("t-ref")) {
ref = node.getAttribute("t-ref");
node.removeAttribute("t-ref");
}
const ref = node.getAttribute("t-ref");
node.removeAttribute("t-ref");
for (let child of node.childNodes) {
const ast = parseNode(child, ctx);