<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> </head> <body> <div id="wrapper"></div> <script> !(function () { var element2InstanceMap = new WeakMap(); BI.getInstanceByElement = function (element) { return element2InstanceMap.get(element); }; BI.Plugin.config(function (options) { }, function (shortcut, instance) { instance.element.attr("shortcut", shortcut); if (instance.options.$testId) { setIDAttribute(instance.element[0], instance.options.$testId); } element2InstanceMap.set(instance.element[0], instance); }); function setIDAttribute (element, id) { if (element.id !== "") { throw new Error("不能修改有默认id的元素"); } element.setAttribute("id", id); } function registerWidgetIdGenerator () { const idSet = new Set(); return function (shortcut, id) { if (idSet.has(id)) { throw new Error("id重复了"); } idSet.add(id); BI.Plugin.registerObject(shortcut, function (widget) { setIDAttribute(widget.element[0], id); }); }; } BI.registerWidgetId = registerWidgetIdGenerator(); }()); </script> <script> function setTestId (parentShortcut, childShortcut, testId) { BI.Plugin.configRender(parentShortcut, function (rendered) { var queue = BI.isArray(rendered) ? rendered : [rendered];// 广度遍历 while (queue.length > 0) { var element = queue.shift(); BI.each(element, function (key, value) { if (BI.isArray(value)) { queue = queue.concat(value); } else if (BI.isPlainObject(value)) { queue.push(value); } else if ("type" === key && value === childShortcut) { element.$testId = testId; } }); } return rendered; }); } setTestId("demo.parent", "bi.button_group", "测试testId"); var Widget = BI.inherit(BI.Widget, { setup: function () { var list; return function () { return { type: "bi.vertical", items: [{ type: "bi.button_group", height: 100, ref: function (_ref) { list = _ref; }, items: BI.range(10).map(function (i) { return { type: "bi.label", text: i, cls: "bi-border" }; }), layouts: [{ type: "bi.inline", tgap: 10, lgap: 10 }] }, { type: "bi.button", text: "点击", handler: function () { } }] }; }; } }); BI.shortcut("demo.parent", Widget); BI.createWidget({ type: "bi.absolute", items: [{ el: { type: "demo.parent" }, top: 100, left: 100 }], element: "#wrapper" }); </script> </body> </html>