mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
@@ -321,6 +321,10 @@ export class Component<
|
||||
return shouldUpdate ? this._updateProps(nextProps) : Promise.resolve();
|
||||
}
|
||||
|
||||
set(target: any, key: string | number, value: any) {
|
||||
this.__owl__.observer!.set(target, key, value);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Private
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
@@ -1449,4 +1449,19 @@ describe("widget and observable state", () => {
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
test("widget can add observed keys to its state", async () => {
|
||||
class TestWidget extends Widget {
|
||||
state: any = { a: 1 };
|
||||
inlineTemplate = `<div><t t-esc="state.a"/><t t-esc="state.b"/></div>`;
|
||||
}
|
||||
const widget = new TestWidget(env);
|
||||
await widget.mount(fixture);
|
||||
|
||||
expect(fixture.innerHTML).toBe("<div>1</div>");
|
||||
|
||||
widget.set(widget.state, "b", 2);
|
||||
await nextTick();
|
||||
expect(fixture.innerHTML).toBe("<div>12</div>");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user