fineui是帆软报表和BI产品线所使用的前端框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

102 lines
2.6 KiB

(function () {
var ParentStore = BI.inherit(Fix.Model, {
state: function () {
return {
context: {
one: {
key: "one.key"
}
}
};
},
childContext: ["context"],
actions: {
changeContext: function () {
this.model.context = {
two: {
key: "two.key"
}
};
}
}
});
BI.model("demo.model.inject.parent_store", ParentStore);
var ChildStore = BI.inherit(Fix.Model, {
inject: ["context"],
computed: {
currContext: function () {
return this.model.context.one.key;
}
},
actions: {
changeContext: function () {
this.model.context = {
one: {
key: "one.changed_key"
}
};
}
}
});
BI.model("demo.model.inject.child_store", ChildStore);
var Child = BI.inherit(BI.Widget, {
_store: function () {
return BI.Models.getModel("demo.model.inject.child_store");
},
watch: {
currContext: function (val) {
this.button.setText(val);
}
},
render: function () {
var self = this;
return {
type: "bi.button",
ref: function () {
self.button = this;
},
text: this.model.currContext,
handler: function () {
self.store.changeContext();
}
};
},
});
BI.shortcut("demo.fix_inject_child", Child);
var Parent = BI.inherit(BI.Widget, {
_store: function () {
return BI.Models.getModel("demo.model.inject.parent_store");
},
render: function () {
var self = this;
return {
type: "bi.vertical",
items: [{
el: {
type: "demo.fix_inject_child"
}
}, {
el: {
type: "bi.button",
text: "点击修改parent state",
handler: function () {
self.store.changeContext();
}
}
}]
};
},
mounted: function () {
}
});
BI.shortcut("demo.fix_inject", Parent);
}());