(function () { var model = Fix.define({ name: 1, arr: [{ n: "a" }, { n: 0 }] }); var Computed = BI.inherit(Fix.Model, { computed: { b: function () { return this.name + 1; }, c: function () { return this.arr[1].n + this.b; } } }); var Store = BI.inherit(Fix.Model, { _init: function () { this.comp = new Computed(model); }, computed: { b: function () { return this.comp.c + 1; }, c: function () { return this.comp.arr[1].n & 1; } }, actions: { run: function () { this.comp.name++; this.comp.arr[1].n++; } } }); Demo.Fix = BI.inherit(BI.Widget, { _store: function () { return new Store(); }, watch: { "b&&(c||b)": function () { this.button.setText(this.model.b); } }, render: function () { var self = this; return { type: "bi.absolute", items: [{ el: { type: "bi.button", ref: function () { self.button = this; }, handler: function () { self.store.run(); }, text: this.model.b } }] }; }, mounted: function () { } }); BI.shortcut("demo.fix", Demo.Fix); }());