node-web-mvc
Version:
node spring mvc
37 lines (36 loc) • 1.26 kB
JavaScript
;
/**
* @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;