nimble-ui
Version:
54 lines (50 loc) • 1.09 kB
JavaScript
/**
* 弥补没有全局vlazy
*
* @export
* @return {Object}
*/
export default function lazy() {
return {
bind: setSrc,
inserted: setSrc,
update: setSrc
};
}
/**
* 格式化value参数
*
* @param {*} el 元素
* @param {*} param 参数
*/
function setSrc(el, param) {
let val = param.value;
let url = val;
let opts = serializeModifiers(param.modifiers);
let srcAttr = ((opts && opts.srcAttr) || 'src') + '';
let isBg = /background/i.test(srcAttr);
if (val instanceof Object) {
url = val.src;
}
if (isBg) {
el.style.backgroundImage = 'url(' + url + ')';
} else {
el[srcAttr] = url;
}
}
/**
* 序列化modifiers
* @param {Object} modifiers 修饰符
* @return {Object}
*/
function serializeModifiers(modifiers) {
let res = {};
if (modifiers) {
if (modifiers.poster) {
res.srcAttr = 'poster';
} else if (modifiers.background || modifiers.backgroundImage || modifiers.bg) {
res.srcAttr = 'background';
}
}
return res;
}