forked from fanruan/fineui
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.
146 lines
3.9 KiB
146 lines
3.9 KiB
<html> |
|
<head> |
|
<meta charset="utf-8"> |
|
<title></title> |
|
<link rel="stylesheet" type="text/css" href="../dist/2.0/fineui.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>--> |
|
</head> |
|
<body> |
|
<div id="wrapper"></div> |
|
<script> |
|
BI.config("demo.parent", function (config) { |
|
console.log("123"); |
|
return { |
|
type: "bi.button", |
|
text: "被替换的组件" |
|
}; |
|
}, { |
|
version: "1.0" |
|
}); |
|
|
|
BI.module("my.module", { |
|
// version不设置的话默认就用接口的version作为判断条件 |
|
version: "1.0", |
|
components: { |
|
"demo.parent": "1.0" |
|
} |
|
}); |
|
|
|
// 主线代码里加这个 |
|
BI.config("bi.provider.system", function (provider) { |
|
provider.addDependencies({ |
|
"my.module": { |
|
minVersion: "2.0", |
|
maxVersion: "4.0" |
|
} |
|
}); |
|
}); |
|
</script> |
|
<script> |
|
var Model = BI.inherit(Fix.Model, { |
|
state: function () { |
|
return { |
|
expand: false |
|
}; |
|
}, |
|
childContext: ["text"], |
|
|
|
computed: { |
|
text: function () { |
|
return this.model.expand ? "text-yes" : "text-not"; |
|
} |
|
}, |
|
|
|
actions: { |
|
toggle: function () { |
|
this.model.expand = !this.model.expand; |
|
} |
|
} |
|
}); |
|
|
|
BI.model("demo.model", Model); |
|
var ChildModel = BI.inherit(Fix.Model, { |
|
context: ["text"] |
|
}); |
|
|
|
BI.model("demo.child_model", ChildModel); |
|
|
|
var Child = BI.inherit(BI.Widget, { |
|
setup: function () { |
|
var store = BI.useStore(function () { |
|
return BI.Models.getModel("demo.child_model"); |
|
}); |
|
return { |
|
render: function () { |
|
return { |
|
type: "bi.vertical", |
|
items: [{ |
|
type: "bi.button", |
|
text: store.model.text, |
|
handler: function () { |
|
console.log("click"); |
|
} |
|
}, { |
|
type: "bi.label", |
|
text: store.model.text |
|
}] |
|
}; |
|
} |
|
}; |
|
} |
|
}); |
|
BI.shortcut("demo.child", Child); |
|
|
|
var Widget = BI.inherit(BI.Widget, { |
|
props: { |
|
vdom: true |
|
}, |
|
watch: { |
|
text: function () { |
|
this.reset(); |
|
} |
|
}, |
|
setup: function () { |
|
var child; |
|
var store = BI.useStore(function () { |
|
return BI.Models.getModel("demo.model"); |
|
}); |
|
setInterval(function () { |
|
store.toggle(); |
|
}, 1000); |
|
// BI.watch("text", function () { |
|
// child.reset(); |
|
// }); |
|
return function () { |
|
return { |
|
type: "bi.vertical", |
|
vgap: store.model.expand ? 20 : 30, |
|
items: [{ |
|
type: "demo.child", |
|
ref: function (_ref) { |
|
child = _ref; |
|
} |
|
}, { |
|
type: "demo.child" |
|
}] |
|
}; |
|
}; |
|
} |
|
}); |
|
BI.shortcut("demo.parent", Widget); |
|
BI.createWidget({ |
|
type: "bi.absolute", |
|
items: [{ |
|
el: { |
|
type: "demo.parent" |
|
}, |
|
top: 100, |
|
left: 100 |
|
}], |
|
element: "#wrapper" |
|
}); |
|
</script> |
|
</body> |
|
</html>
|
|
|