diff --git a/packages/fineui/src/component/treevaluechooser/abstract.treevaluechooser.js b/packages/fineui/src/component/treevaluechooser/abstract.treevaluechooser.js index 61323f27c..90bf612d4 100644 --- a/packages/fineui/src/component/treevaluechooser/abstract.treevaluechooser.js +++ b/packages/fineui/src/component/treevaluechooser/abstract.treevaluechooser.js @@ -174,6 +174,7 @@ export class AbstractTreeValueChooser extends Widget { } _reqSelectedTreeNode(op, callback) { + const self = this; const selectedValues = deepClone(op.selectedValues); const notSelectedValue = op.notSelectedValue || {}; const keyword = op.keyword || ""; @@ -188,7 +189,7 @@ export class AbstractTreeValueChooser extends Widget { dealWithSelectedValues(selectedValues); callback(selectedValues); - const dealWithSelectedValues = selectedValues => { + function dealWithSelectedValues(selectedValues) { let p = parentValues.concat(notSelectedValue); // 存储的值中存在这个值就把它删掉 // 例如选中了中国-江苏-南京, 取消中国或江苏或南京 @@ -197,18 +198,18 @@ export class AbstractTreeValueChooser extends Widget { // 如果搜索的值在父亲链中 if (isSearchValueInParent(p)) { // 例如选中了 中国-江苏, 搜索江苏, 取消江苏(干掉了江苏) - this._deleteNode(selectedValues, p); + self._deleteNode(selectedValues, p); } else { const searched = []; // 要找到所有以notSelectedValue为叶子节点的链路 const find = search(parentValues, notSelectedValue, [], searched); if (find && isNotEmptyArray(searched)) { each(searched, (i, arr) => { - const node = this._getNode(selectedValues, arr); + const node = self._getNode(selectedValues, arr); if (node) { // 例如选中了 中国-江苏, 搜索江苏, 取消中国(实际上只想删除中国-江苏,因为搜的是江苏) // 例如选中了 中国-江苏-南京,搜索南京,取消中国(实际上只想删除中国-江苏-南京,因为搜的是南京) - this._deleteNode(selectedValues, arr); + self._deleteNode(selectedValues, arr); } else { // 例如选中了 中国-江苏,搜索南京,取消中国(实际上只想删除中国-江苏-南京,因为搜的是南京) expandSelectedValue(selectedValues, arr, last(arr)); @@ -239,14 +240,14 @@ export class AbstractTreeValueChooser extends Widget { // 添加去掉搜索的结果集 if (result.length > 0) { each(result, (i, strs) => { - this._buildTree(selectedValues, strs); + self._buildTree(selectedValues, strs); }); } } } }; - const expandSelectedValue = (selectedValues, parents, notSelectedValue) => { + function expandSelectedValue(selectedValues, parents, notSelectedValue) { let next = selectedValues; const childrenCount = []; const path = []; @@ -259,7 +260,7 @@ export class AbstractTreeValueChooser extends Widget { } if (isEmpty(next)) { const split = parents.slice(0, i); - const expanded = this._getChildren(split); + const expanded = self._getChildren(split); path.push(split); childrenCount.push(expanded.length); // 如果只有一个值且取消的就是这个值 @@ -270,7 +271,7 @@ export class AbstractTreeValueChooser extends Widget { ) { for (let j = childrenCount.length - 1; j >= 0; j--) { if (childrenCount[j] === 1) { - this._deleteNode(selectedValues, path[j]); + self._deleteNode(selectedValues, path[j]); } else { break; } @@ -295,16 +296,16 @@ export class AbstractTreeValueChooser extends Widget { }); }; - const search = (parents, current, result, searched) => { + function search(parents, current, result, searched) { const newParents = clone(parents); newParents.push(current); - if (this._isMatch(parents, current, keyword)) { + if (self._isMatch(parents, current, keyword)) { searched && searched.push(newParents); return true; } - const children = this._getChildren(newParents); + const children = self._getChildren(newParents); const notSearch = []; let can = false; @@ -327,9 +328,9 @@ export class AbstractTreeValueChooser extends Widget { return can; }; - const isSearchValueInParent = parentValues => { + function isSearchValueInParent(parentValues) { for (let i = 0, len = parentValues.length; i < len; i++) { - if (this._isMatch(parentValues.slice(0, i), parentValues[i], keyword)) { + if (self._isMatch(parentValues.slice(0, i), parentValues[i], keyword)) { return true; } }