diff --git a/demo/js/widget/multitree/demo.multi_tree_combo.js b/demo/js/widget/multitree/demo.multi_tree_combo.js index fcc9107cb..c3e0ffaa4 100644 --- a/demo/js/widget/multitree/demo.multi_tree_combo.js +++ b/demo/js/widget/multitree/demo.multi_tree_combo.js @@ -38,7 +38,15 @@ Demo.MultiTreeCombo = BI.inherit(BI.Widget, { width: 300, value: { "根目录": {} - } + }, + listeners: [ + { + eventName: "EVENT_CONFIRM", + action: function () { + console.log("EVENT_CONFIRM", this.getValue()); + } + } + ] }, { type: "bi.button", text: "getValue", @@ -52,4 +60,4 @@ Demo.MultiTreeCombo = BI.inherit(BI.Widget, { } }); -BI.shortcut("demo.multi_tree_combo", Demo.MultiTreeCombo); \ No newline at end of file +BI.shortcut("demo.multi_tree_combo", Demo.MultiTreeCombo); diff --git a/src/widget/multitree/multi.tree.combo.js b/src/widget/multitree/multi.tree.combo.js index d48e8d6db..8e1e289c1 100644 --- a/src/widget/multitree/multi.tree.combo.js +++ b/src/widget/multitree/multi.tree.combo.js @@ -82,6 +82,7 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { self.numberCounter.setButtonChecked(val); self.storeValue = { value: self.combo.getValue() }; self.fireEvent(BI.MultiTreeCombo.EVENT_CLICK_ITEM, self.combo.getValue()); + self._dataChange = true; } }, { eventName: BI.MultiTreePopup.EVENT_CLICK_CONFIRM, @@ -92,6 +93,7 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { eventName: BI.MultiTreePopup.EVENT_CLICK_CLEAR, action: function () { clear = true; + self._dataChange = true; self.setValue(); self._defaultState(); } @@ -180,12 +182,16 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { this.getSearcher().setState(checked ? BI.Selection.Multi : BI.Selection.None); self.numberCounter.setButtonChecked(val); self.fireEvent(BI.MultiTreeCombo.EVENT_CLICK_ITEM, self.combo.getValue()); + self._dataChange = true; }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { if (isSearching()) { return; } + if (!this.isViewVisible()) { + self._dataChange = false; // 标记数据是否发生变化 + } if (change === true) { self.storeValue = { value: self.combo.getValue() }; change = false; @@ -198,7 +204,7 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { this.combo.on(BI.Combo.EVENT_BEFORE_HIDEVIEW, function () { if (isSearching()) { self._stopEditing(); - self.fireEvent(BI.MultiTreeCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.MultiTreeCombo.EVENT_CONFIRM); } else { if (isPopupView()) { self._stopEditing(); @@ -206,7 +212,7 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { if (clear === true) { self.storeValue = { value: {} }; } - self.fireEvent(BI.MultiTreeCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.MultiTreeCombo.EVENT_CONFIRM); } } clear = false; diff --git a/src/widget/multitree/multi.tree.insert.combo.js b/src/widget/multitree/multi.tree.insert.combo.js index c9ce5545f..6db34dc61 100644 --- a/src/widget/multitree/multi.tree.insert.combo.js +++ b/src/widget/multitree/multi.tree.insert.combo.js @@ -56,6 +56,7 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { self.combo.setValue(self.storeValue); self.numberCounter.setValue(self.storeValue); self._stopEditing(); + self._dataChange = true; } }] } @@ -99,6 +100,7 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { self.numberCounter.setButtonChecked(val); self.storeValue = { value: self.combo.getValue() }; self.fireEvent(BI.MultiTreeInsertCombo.EVENT_CLICK_ITEM, self.getValue()); + self._dataChange = true; } }, { eventName: BI.MultiTreePopup.EVENT_CLICK_CONFIRM, @@ -109,6 +111,7 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { eventName: BI.MultiTreePopup.EVENT_CLICK_CLEAR, action: function () { clear = true; + self._dataChange = true; self.setValue(); self._defaultState(); } @@ -192,12 +195,16 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { this.getSearcher().setState(checked ? BI.Selection.Multi : BI.Selection.None); self.numberCounter.setButtonChecked(val); self.fireEvent(BI.MultiTreeInsertCombo.EVENT_CLICK_ITEM, self.combo.getValue()); + self._dataChange = true; }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { if (isSearching()) { return; } + if (!this.isViewVisible()) { + self._dataChange = false; // 标记数据是否发生变化 + } if (change === true) { self.storeValue = { value: self.combo.getValue() }; change = false; @@ -210,7 +217,7 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { this.combo.on(BI.Combo.EVENT_BEFORE_HIDEVIEW, function () { if (isSearching()) { self._stopEditing(); - self.fireEvent(BI.MultiTreeInsertCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.MultiTreeInsertCombo.EVENT_CONFIRM); } else { if (isPopupView()) { self._stopEditing(); @@ -218,7 +225,7 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { if (clear === true) { self.storeValue = { value: {} }; } - self.fireEvent(BI.MultiTreeInsertCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.MultiTreeInsertCombo.EVENT_CONFIRM); } } clear = false; diff --git a/src/widget/multitree/multi.tree.list.combo.js b/src/widget/multitree/multi.tree.list.combo.js index 9b82b8780..a3a016179 100644 --- a/src/widget/multitree/multi.tree.list.combo.js +++ b/src/widget/multitree/multi.tree.list.combo.js @@ -59,6 +59,7 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { self.combo.setValue(self.storeValue); self.numberCounter.setValue(self.storeValue); self._stopEditing(); + self._dataChange = true; } }] } @@ -116,6 +117,7 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { self.numberCounter.setButtonChecked(val); self.storeValue = { value: self.combo.getValue() }; self.fireEvent(BI.MultiTreeListCombo.EVENT_CLICK_ITEM, self.getValue()); + self._dataChange = true; } }, { eventName: BI.MultiTreePopup.EVENT_CLICK_CONFIRM, @@ -126,6 +128,7 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { eventName: BI.MultiTreePopup.EVENT_CLICK_CLEAR, action: function () { clear = true; + self._dataChange = true; self.setValue(); self._defaultState(); } @@ -209,12 +212,16 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { this.getSearcher().setState(checked ? BI.Selection.Multi : BI.Selection.None); self.numberCounter.setButtonChecked(val); self.fireEvent(BI.MultiTreeListCombo.EVENT_CLICK_ITEM, self.combo.getValue()); + self._dataChange = true; }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { if (isSearching()) { return; } + if (!this.isViewVisible()) { + self._dataChange = false; // 标记数据是否发生变化 + } if (change === true) { self.storeValue = { value: self.combo.getValue() }; change = false; @@ -227,7 +234,7 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { this.combo.on(BI.Combo.EVENT_BEFORE_HIDEVIEW, function () { if (isSearching()) { self.trigger.stopEditing(); - self.fireEvent(BI.MultiTreeListCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.MultiTreeListCombo.EVENT_CONFIRM); } else { if (isPopupView()) { self._stopEditing(); @@ -235,7 +242,7 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { if (clear === true) { self.storeValue = { value: [] }; } - self.fireEvent(BI.MultiTreeListCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.MultiTreeListCombo.EVENT_CONFIRM); } } clear = false;