<html> <head> <meta charset="utf-8"> <title></title> <!-- <link rel="stylesheet" type="text/css" href="../dist/2.0/fineui.min.css"/> <script src="../dist/2.0/fineui.js"></script> --> <link rel="stylesheet" type="text/css" href="http://fanruan.design/fineui/2.0/fineui.min.css"/> <!-- <script src="http://fanruan.design/fineui/2.0/fineui.min.js"></script>--> <script src="http://localhost:9001/fineui.js"></script> </head> <body> <div id="wrapper"></div> <script> var Model = BI.inherit(BI.Model, { state: function () { return { theme: "light" }; }, childContext: ["theme"], actions: { toggle: function () { this.model.theme = this.model.theme === "light" ? "dark" : "light"; } } }); BI.model("demo.model", Model); var Child = BI.inherit(BI.Widget, { render: function () { var label; return { type: "bi.context", context: "theme", watch: function (newValue, oldValue) { label.setText(newValue); }, items: [(context) => { return { type: "bi.label", height: 30, ref: function (_ref) { label = _ref; }, text: context.model.theme } }] }; } }); BI.shortcut("demo.child", Child); var Widget = BI.inherit(BI.Widget, { props: { baseCls: "my-parent" }, _store: function () { return BI.Models.getModel("demo.model"); }, setup: function () { var child; var store = BI.useStore(); return function () { return { type: "bi.vertical", vgap: 20, items: [{ type: "demo.child", ref: function (_ref) { child = _ref; } }, { type: "bi.button", text: "改变主题", handler: function () { store.toggle(); } }] }; }; } }); BI.shortcut("demo.parent", Widget); BI.createWidget({ type: "bi.absolute", items: [{ el: { type: "demo.parent" }, top: 100, left: 100 }], element: "#wrapper" }); </script> </body> </html>