{
a: 'http://...',
b: '<html>...</html>'
}
export default {
data () {
return {
htmlModel:{}
};
},
methods: {
resolver (data, ...args) {
let htmlModel = Object.assign({}, data);
let requestArray = [];
if (args.length > 0) {
args.forEach((item, index) => {
if (data[item] && this.isHttp(data[item])) {
requestArray.push(item);
this.requestHtml(data[item], htmlModel, item, args);
} else if (data[item]) {
htmlModel[item] = data[item];
this.call(htmlModel, args);
} else {
this.call(htmlModel, args);
}
});
} else {
for (let key in data) {
if (data[key] && this.isHttp(data[key])) {
requestArray.push(key);
this.requestHtml(data[key], htmlModel, key);
} else {
htmlModel[key] = data[key];
this.call(htmlModel);
}
}
}
},
call (htmlModel, args) {
let callMap = {};
if (args && args.length > 0) {
callMap = Object.assign({}, htmlModel);
for (let i = 0; i < args.length; i++) {
if (this.isHttp(callMap[args[i]])) {
callMap[args[i]] = '';
}
}
this.parseSuccess(callMap);
} else {
for (let key in htmlModel) {
if (!this.isHttp(htmlModel[key])) {
callMap[key] = htmlModel[key];
} else {
callMap[key] = '';
}
}
this.parseSuccess(callMap);
}
},
requestHtml (requestUrl, htmlModel, key, args) {
let $this = this;
return axios({
method:'GET',
url:requestUrl
}).then(response => {
htmlModel[key] = response.data;
$this.call(htmlModel, args);
}).catch(e => {
$this.call(htmlModel, args);
});
},
isHttp (str) {
let regex = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?$/;
return regex.test(str);
}
}
};