当前位置 主页 > 网站技术 > 代码类 >

    关于vue路由缓存清除在main.js中的设置

    栏目:代码类 时间:2019-11-06 09:05

    1.main.js

    /* 页面数据缓存 */
    var _CACHE_OBJS = {};
     
    function _init_cache(comp, key, cache) {
     var obj = cache[key];
     if (obj !== undefined) {
     comp[key] = obj;
     }
     var deep = typeof comp[key] === 'object';
     comp.$watch(key,
     function (val) {
      //console.log("page " + key + " updated");
      cache[key] = val;
     }, {
      deep: deep
     });
    }
     
     
    var _PAGE_CACHE = {
     /*
     * 初始化页面缓存数据
     * comp: 当前页面component 对象
     * path: 当前页面vue router path
     * data: 需要缓存的数据对象名称,或名称数组
     */
     cache: function (comp, path, data) {
     if (data == '' || data == undefined || data == null) {
      data = restore(comp._data);
     }
     var cache = _CACHE_OBJS[path];
     if (cache === undefined) {
      cache = {};
      _CACHE_OBJS[path] = cache;
     }
     if (typeof data == 'string') {
      _init_cache(comp, data, cache);
     } else {
      var i;
      for (i = 0; i < data.length; ++i) {
      _init_cache(comp, data[i], cache);
      }
     }
     console.log(_CACHE_OBJS, "页面数据缓存");
     },
     
     /* 清除页面缓存 */
     clear: function (path) {
     delete _CACHE_OBJS[path];
     },
     
     /* 清空所有缓存数据 */
     reset: function () {
     //console.log("reset page cache");
     _CACHE_OBJS = {};
     },
     /*根据path查看当前页面缓存是否存在*/
     has_cache: function (path) {
     return _CACHE_OBJS[path] !== undefined && !isEmptyObject(_CACHE_OBJS[path]);
     }
    };
     
    Vue.prototype.$cache = _PAGE_CACHE;
    /* eslint-disable no-new */
     
    var restore = function (vueObject) {
     var result = [];
     for (var index in vueObject) {
     result.push(index);
     }
     return result;
    };
     
    var isEmptyObject = function (obj) {
     for (var key in obj) {
     return false;
     }
     return true;
    }
     

    以上这篇关于vue路由缓存清除在main.js中的设置就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持IIS7站长之家。