zpw-vue-forms
Version:
vue 表单系统
69 lines (68 loc) • 1.82 kB
JavaScript
let deepAssign = require('deep-assign');
const storage = {
data: JSON.parse(localStorage.getItem('app') || '{}'),
set: function set(key, value) {
try {
this.remove(key);
localStorage.setItem('app', this.create(this.data, key, value));
} catch (e) {}
},
get: function get(key) {
var keys = key.split('.');
var arguent = this.data;
var flag = true;
for (var i = 0; i < keys.length; i++) {
if (arguent[keys[i]]) {
arguent = arguent[keys[i]];
} else {
flag = false;
break;
}
}
if (flag) {
if (typeof arguent === 'string') {
arguent = arguent.replace(/\"/gi, '');
}
return arguent;
}
},
remove: function remove(key) {
var keys = key.split('.');
var arguent = this.data;
var flag = true;
for (var i = 0; i < keys.length; i++) {
if (flag) {
if (i === keys.length - 1) {
delete arguent[keys[i]];
flag = false;
} else if (arguent[keys[i]]) {
arguent = arguent[keys[i]];
}
}
}
localStorage.setItem('app', JSON.stringify(this.data));
},
clear: function clear() {
var store = this.data["store"];
this.data = {};
storage.set("store", store);
},
create: function create(args, key, value) {
var keys = key.split('.');
var arg1 = {};
var arg2 = {};
var newArg = {};
for (var i = 0; i < keys.length; i++) {
if (i === keys.length - 1) {
arg1[keys[i]] = value;
} else {
arg1[keys[i]] = {};
}
arg1 = arg1[keys[i]];
arg2[keys[i]] = arg1;
}
newArg[keys[0]] = arg2[keys[0]];
return JSON.stringify(deepAssign(args, newArg));
}
}
export default storage