mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
fix: properly observe recursively new values
This commit is contained in:
+1
-1
@@ -133,7 +133,7 @@ export function makeObserver(): Observer {
|
|||||||
}
|
}
|
||||||
if (newVal !== value) {
|
if (newVal !== value) {
|
||||||
value = newVal;
|
value = newVal;
|
||||||
// observe(newVal);
|
observe(newVal);
|
||||||
obj.__rev__!++;
|
obj.__rev__!++;
|
||||||
observer.__rev__++;
|
observer.__rev__++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,6 +190,22 @@ describe("observer", () => {
|
|||||||
expect(observer.__rev__).toBe(1);
|
expect(observer.__rev__).toBe(1);
|
||||||
expect(state.arr.length).toBe(1);
|
expect(state.arr.length).toBe(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("reobserve new object values", () => {
|
||||||
|
const observer = makeObserver();
|
||||||
|
const obj: any = { a: 1 };
|
||||||
|
observer.observe(obj);
|
||||||
|
expect(obj.__rev__).toBe(0);
|
||||||
|
obj.a = { b: 2 };
|
||||||
|
expect(observer.__rev__).toBe(1);
|
||||||
|
expect(obj.__rev__).toBe(1);
|
||||||
|
expect(obj.a.__rev__).toBe(0);
|
||||||
|
|
||||||
|
obj.a.b = 3;
|
||||||
|
expect(observer.__rev__).toBe(2);
|
||||||
|
expect(obj.__rev__).toBe(1);
|
||||||
|
expect(obj.a.__rev__).toBe(1);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("advanced state properties", () => {
|
describe("advanced state properties", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user