ui-template-muc
Version:
A fantastic mobile ui lib implement by Vue
28 lines (27 loc) • 1.14 kB
JavaScript
// 解析的数据结构参考https://cn.vuejs.org/v2/guide/render-function.html#%E6%B7%B1%E5%85%A5%E6%95%B0%E6%8D%AE%E5%AF%B9%E8%B1%A1
import objectAssign from '@utils/assign'
import {lowercamelcase} from '@utils/camelcase'
const eventReg = new RegExp(/^on(.+)/)
const reservedProps = ['class', 'style', 'attrs', 'props', 'domProps', 'on', 'nativeOn', 'directives', 'scopedSlots', 'slot', 'key', 'ref', 'refInFor']
export default function parseData (config) {
let data = {}
//通过createApi创建的组件默认是隐藏的
let props = {}
let on = {}
for (const key in config) {
if (config.hasOwnProperty(key)) {
if (reservedProps.indexOf(key) !== -1) {
data[key] = config[key]
} else if (eventReg.test(key)) { //事件单独处理
let eventName = eventReg.exec(key)[1]
eventName = lowercamelcase(eventName)
on[eventName] = config[key]
} else { //其他字段默认都当做props属性
props[key] = config[key]
}
}
}
data['on'] = objectAssign(on, data['on'])
data['props'] = objectAssign(props, data['props'])
return data
}