diff --git a/src/widget/multiselect/loader.js b/src/widget/multiselect/loader.js index 3ea50472f..0101d8908 100644 --- a/src/widget/multiselect/loader.js +++ b/src/widget/multiselect/loader.js @@ -158,6 +158,11 @@ BI.MultiSelectInnerLoader = BI.inherit(BI.Widget, { this.next.setEnd(); } } + // cacheGroup渲染的是全量的,如果这次加载更多add的items是从cacheItems里面拿的,那不用再add了 + if (this.cachItems.length > 0) { + this.button_group.addItems(...arguments); + return; + } var renderEngine = BI.Widget._renderEngine; BI.Widget.registerRenderEngine(BI.Element.renderEngine); this.cachGroup.addItems.apply(this.cachGroup, arguments); @@ -183,13 +188,6 @@ BI.MultiSelectInnerLoader = BI.inherit(BI.Widget, { this.times = 1; this.count = 0; this.count += items.length; - if (BI.isObject(this.next)) { - if (this.hasNext()) { - this.next.setLoaded(); - } else { - this.next.invisible(); - } - } return true; }, @@ -205,6 +203,15 @@ BI.MultiSelectInnerLoader = BI.inherit(BI.Widget, { this.cachGroup.populate.call(this.cachGroup, items, keyword); BI.Widget.registerRenderEngine(renderEngine); this.button_group.populate.call(this.button_group, items.slice(0, firstItemsCount), keyword); + + // hasNext依赖的是cacheItems计算,所以从_populate挪到populate里面 + if (BI.isObject(this.next)) { + if (this.hasNext()) { + this.next.setLoaded(); + } else { + this.next.invisible(); + } + } } },