diff --git a/src/base/combination/tab.js b/src/base/combination/tab.js index 0531d16c8..30259e71a 100644 --- a/src/base/combination/tab.js +++ b/src/base/combination/tab.js @@ -15,7 +15,8 @@ BI.Tab = BI.inherit(BI.Widget, { tab: false, cardCreator: function (v) { return BI.createWidget(); - } + }, + keepAlives: [] }); }, @@ -66,7 +67,7 @@ BI.Tab = BI.inherit(BI.Widget, { var self = this, o = this.options; if (o.single === true) { BI.each(this.cardMap, function (name, card) { - if (name !== (currCardName + "")) { + if (name !== (currCardName + "") && self._keepAlive(name) !== true) { self.layout.deleteCardByName(name); delete self.cardMap[name]; } @@ -82,6 +83,12 @@ BI.Tab = BI.inherit(BI.Widget, { } }, + _keepAlive: function (v) { + var o = this.options; + return BI.isFunction(o.keepAlives) ? o.keepAlives(v) : BI.contains(o.keepAlives, v); + + }, + created: function () { var o = this.options; if (o.showIndex !== false) { diff --git a/src/router/router.js b/src/router/router.js index 93a661d84..4ee289f88 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -3179,7 +3179,8 @@ ref: function (_ref) { self.tab = _ref; }, - single: false, // 是不是单页面 + single: o.single, // 是不是单页面 + keepAlives: o.keepAlives, logic: { dynamic: false }, diff --git a/typescript/base/combination/tab.ts b/typescript/base/combination/tab.ts index 611c3e9c0..fa4cc8b25 100644 --- a/typescript/base/combination/tab.ts +++ b/typescript/base/combination/tab.ts @@ -15,6 +15,7 @@ export declare class Tab extends Widget { dynamic: boolean; }; tab?: Obj; + keepAlives?: string[] | ((cardName: string) => boolean) } setSelect(v: string | number, action?: Action, callback?: Function): void;