UNPKG

migi

Version:

A JavaScript MVVM on JSX

55 lines (50 loc) 1.31 kB
import Event from './Event'; import Component from './Component'; class CacheComponent extends Component { constructor(...data) { super(...data); this.__handler = {}; // 缓存data key的hash // this.__ccb = false; // 缓存1ms再数据分发的是否在缓存时间内的状态标识 this.__timeout; this.__timecb; } // @overwrite __data(k) { var self = this; // set触发数据变更时,若已DOM则打开开关 if(self.__dom) { self.__canData = true; } if(!Array.isArray(k)) { k = [k]; } k.forEach(function(k) { self.__handler[k] = true; }); if(!self.__ccb) { self.__ccb = true; // 1ms后触发数据变更并重设状态 self.__timeout = setTimeout(self.__timecb = function() { self.__ccb = false; var temp = self.__handler; var keys = Object.keys(temp); self.__handler = {}; // 可能被清空 if(keys.length) { self.__onData(keys); self.emit(Event.DATA, keys, keys.map(function(key) { return self[key]; })); } }, 0); } } flush() { if(this.__timeout) { clearTimeout(this.__timeout); this.__ccb = false; this.__timecb(); } } } export default CacheComponent;