UNPKG

node-web-mvc

Version:
37 lines (36 loc) 1.26 kB
"use strict"; /** * @module ListUpdater * @description 列表更新器 */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const AbstractUpdater_1 = __importDefault(require("./AbstractUpdater")); class ArrayUpdater extends AbstractUpdater_1.default { internalUpdate(ctor, newCtor) { const creatable = typeof newCtor === 'function'; const elements = this.data; // 替换实例 elements.forEach((element, index) => { if (!creatable || !this.needHotFn(element, ctor)) { return; } else if (!creatable) { console.warn(`Hot fail: ${newCtor.name} : No-parameter construction required`); } elements[index] = this.createInstance(newCtor, element); }); } cleanUpdate(oldCtor) { const elements = this.data; const items = elements.filter((m) => !(this.needHotFn(m, oldCtor))); if (items.length !== elements.length) { elements.length = 0; elements.push(...items); } ; } } exports.default = ArrayUpdater;