mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[FIX] qweb: correctly handle top level t-call and body
Whenever a top level t-call was made with some non empty body, Owl complained that a template should not have more than one root node. The reason was that the compilation context for the body of the t-call directive was the same as the root compilation context, and it already had a parentNode set. To fix the issue, this commit simply use the subContext method to create a different compilation context, which actually makes sense, because the body of a t-call is really a different situation. Also, as a bonus, it slightly improves the code for the t-call directive. closes #760
This commit is contained in:
@@ -1096,6 +1096,13 @@ describe("t-call (template calling", () => {
|
||||
expect(renderToString(qweb, "main")).toBe(expected);
|
||||
});
|
||||
|
||||
test("t-call with body content as root of a template", () => {
|
||||
qweb.addTemplate("antony", `<foo><t t-raw="0"/></foo>`);
|
||||
qweb.addTemplate("main", `<t><t t-call="antony"><p>antony</p></t></t>`);
|
||||
const expected = "<foo><p>antony</p></foo>";
|
||||
expect(renderToString(qweb, "main")).toBe(expected);
|
||||
});
|
||||
|
||||
test("dynamic t-call", () => {
|
||||
qweb.addTemplate("foo", `<foo><t t-esc="val"/></foo>`);
|
||||
qweb.addTemplate("bar", `<bar><t t-esc="val"/></bar>`);
|
||||
|
||||
Reference in New Issue
Block a user