【仅供内部供应商使用,不提供对外解答和培训】
Table of Contents |
---|
开发者咨询一个可删除的列表怎么实现
实际上这是个自定义组件和button_group灵活使用的案例
...
Code Block |
---|
!(function () { var List = BI.inherit(BI.Widget, { props: { baseCls: "dec-frame-body", items: [{ text: "1", value: 1 }, { text: "2", value: 2 }] }, render: function () { var self = this, o = this.options; return { type: "bi.vertical", items: [ { el: { type: "bi.button", text: "添加一个", handler: function () { self._addOne(); } } }, { el: { type: "bi.button_group", ref: function (_ref) { self.list = _ref; }, layouts: [ { type: "bi.vertical" } ], chooseType: BI.Selection.Single, scrolly: true, items: this._formatItems(o.items), listeners: [ { eventName: "EVENT_CHANGE", action: function () { self._handleSelect(); } } ] } } ] }; }, _addOne: function () { this.options.items.push({ text: BI.UUID(), value: BI.UUID() }); this.populate(this.options.items); }, _deleteOne: function (value) { this.options.items = BI.filter(this.options.items, function (index, item) { return item.value !== value; }); this.populate(this.options.items); }, _handleSelect: function () { var selectedValues = this.getValue(); BI.each(this.options.items, function (index, item) { item.selected = BI.contains(selectedValues, item.value); }); }, _formatItems: function (items) { var self = this; return BI.map(items, function (index, item) { return BI.extend({ type: "dec.demo.item", listeners: [ { eventName: "EVENT_DELETE", action: function (value) { self._deleteOne(value); } } ] }, item); }); }, getValue: function () { return this.list.getValue(); }, populate: function (items) { this.list.populate(this._formatItems(items)); } }); BI.shortcut("dec.demo", List); }()); |
效果示例