diff --git a/src/qweb.ts b/src/qweb.ts index 1126ffae..eafb53f8 100644 --- a/src/qweb.ts +++ b/src/qweb.ts @@ -159,7 +159,8 @@ export class Context { if (chars[invarPos - 1] !== "." && RESERVED_WORDS.indexOf(invar) < 0) { invar = WORD_REPLACEMENT[invar] || - (invar in this.variables && this.variables[invar]) || + (invar in this.variables && + this.formatExpression(this.variables[invar])) || "context['" + invar + "']"; } r += invar; diff --git a/tests/__snapshots__/qweb.test.ts.snap b/tests/__snapshots__/qweb.test.ts.snap index ebd6aff7..528075d4 100644 --- a/tests/__snapshots__/qweb.test.ts.snap +++ b/tests/__snapshots__/qweb.test.ts.snap @@ -105,7 +105,7 @@ exports[`attributes from object variables set previously 1`] = ` var h = this.utils.h; var c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - var _2 = {a:'b'}.a; + var _2 = {a: 'b'}.a; var c3 = [], p3 = {key:3,attrs:{class: _2}}; var vn3 = h('span', p3, c3); c1.push(vn3); @@ -1310,6 +1310,19 @@ exports[`t-set set from empty body 1`] = ` }" `; +exports[`t-set t-set and t-if 1`] = ` +"function anonymous(context,extra +) { + var h = this.utils.h; + var c1 = [], p1 = {key:1}; + var vn1 = h('div', p1, c1); + if (context['value'] === 'ok') { + c1.push({text: \`grimbergen\`}); + } + return vn1; +}" +`; + exports[`t-set value priority 1`] = ` "function anonymous(context,extra ) { diff --git a/tests/qweb.test.ts b/tests/qweb.test.ts index 0acb92d6..9c4c60f1 100644 --- a/tests/qweb.test.ts +++ b/tests/qweb.test.ts @@ -195,6 +195,19 @@ describe("t-set", () => { expect(renderToString(qweb, "test")).toBe("
ok
"); }); + test("t-set and t-if", () => { + qweb.addTemplate( + "test", + `
+ + grimbergen +
` + ); + expect(renderToString(qweb, "test", { value: "ok" })).toBe( + "
grimbergen
" + ); + }); + test("set from body literal", () => { qweb.addTemplate( "test",