智能照明系统APP-本地串口
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
LightingSystemApp-serial/.svn/pristine/39/3949b3ab87f974bf178f9670e55...

86 lines
1.8 KiB

import {
hasOwn
} from 'uni-shared'
import {
parseData
} from './data-parser'
import {
parseProperties
} from './properties-parser'
import {
parseMethods
} from './methods-parser'
import {
parseLifecycle
} from './lifecycle-parser'
import {
parseDefinitionFilter
} from './definition-filter-parser'
function parseBehavior (behavior) {
const {
data,
methods,
behaviors,
properties
} = behavior
const vueComponentOptions = {
watch: {},
mpOptions: {
mpObservers: []
}
}
parseData(data, vueComponentOptions)
parseMethods(methods, vueComponentOptions)
parseBehaviors(behaviors, vueComponentOptions)
parseProperties(properties, vueComponentOptions)
parseLifecycle(behavior, vueComponentOptions)
parseDefinitionFilter(behavior, vueComponentOptions)
return vueComponentOptions
}
const BEHAVIORS = {
'wx://form-field': {
beforeCreate () {
const mpOptions = this.$options.mpOptions
if (!mpOptions.properties) {
mpOptions.properties = Object.create(null)
}
const props = mpOptions.properties
// TODO form submit,reset
if (!hasOwn(props, 'name')) {
props.name = {
type: String
}
}
if (!hasOwn(props, 'value')) {
props.value = {
type: String // 默认类型调整为 String,否则默认值为 null,导致一些自定义 input 显示不正确
}
}
}
}
}
export function parseBehaviors (behaviors, vueComponentOptions) {
if (!behaviors) {
return
}
behaviors.forEach(behavior => {
if (typeof behavior === 'string') {
BEHAVIORS[behavior] && vueComponentOptions.mixins.push(BEHAVIORS[behavior])
} else {
vueComponentOptions.mixins.push(parseBehavior(behavior))
}
})
}