// splice和duplicate函数 SpliceDuplicateView = BI.inherit(BI.View, { _defaultConfig: function () { return BI.extend(SpliceDuplicateView.superclass._defaultConfig.apply(this, arguments), { baseCls: "bi-splice-duplicate" }); }, _init: function () { SpliceDuplicateView.superclass._init.apply(this, arguments); this.children = {}; }, splice: function (old, key1, key2) { this.children[key1].destroy(); delete this.children[key1]; this._showModelData(); }, duplicate: function (copy, key1, key2) { this.add(copy); this._showModelData(); }, _showModelData: function () { // 这里只是为了输出this.model.data 原则上是不允许这么调用的 this.text.setText("父级数据:" + JSON.stringify(this.model.data)); }, render: function (vessel) { this.text = BI.createWidget({ type: "bi.label", height: 50, cls: "superiors-label" }); this.container = BI.createWidget({ type: "bi.vertical", element: vessel, items: [this.text], hgap: 100, vgap: 10 }); this._showModelData(); }, add: function (id) { this.children[id] = BI.createWidget({ type: "bi.center", hgap: 10, vgap: 10 }); this.addSubVessel(id, this.children[id], { defaultShowName: "sdSub" }); this.skipTo("sdSub", id, id); this.container.addItem(this.children[id]); }, refresh: function () { var self = this; BI.each(this.model.toJSON(), function (key, value) { if (!self.children[key]) { self.add(key); } }); } }); SpliceDuplicateModel = BI.inherit(BI.Model, { _defaultConfig: function () { return BI.extend(SpliceDuplicateModel.superclass._defaultConfig.apply(this, arguments), { 1: { name: "名字" } }); }, splice: function (key1) { delete this.data[key1]; }, similar: function (value, key1) { value.name = BI.Func.createDistinctName(this.data, this.get(key1).name); return value; }, duplicate: function (copy, key1) { this.data[copy] = this.get(copy); }, _init: function () { SpliceDuplicateModel.superclass._init.apply(this, arguments); }, refresh: function () { this.data = BI.deepClone(this.toJSON()); } }); SDSubView = BI.inherit(BI.View, { _defaultConfig: function () { return SDSubView.superclass._defaultConfig.apply(this, arguments); }, _init: function () { SDSubView.superclass._init.apply(this, arguments); }, render: function (vessel) { var self = this; BI.createWidget({ type: "bi.center", element: vessel, cls: "sd-child", height: 30, items: [{ type: "bi.text_button", height: 30, text: "复制 " + this.model.get("name") + " , 数据:" + JSON.stringify(this.model.toJSON()), cls: "right-button-add", handler: function () { self.model.copy(); } }, { type: "bi.text_button", height: 30, text: "删除", cls: "right-button-del", handler: function () { self.model.destroy(); } }] }); } }); SDSubModel = BI.inherit(BI.Model, { _defaultConfig: function () { return BI.extend(SDSubModel.superclass._defaultConfig.apply(this, arguments), {}); }, _init: function () { SDSubModel.superclass._init.apply(this, arguments); } }); Demo.Func = BI.inherit(BI.Widget, { render: function () { var view = BI.View.createView("/spliceDuplicate", {}, { element: this }); view.populate(); }, mounted: function () { } }); BI.shortcut("demo.spliceDuplicate", Demo.Func);