未验证 提交 5af90a1f 编写于 作者: Z zhangleiooo 提交者: GitHub

Create form.js

add form component.
上级 686336d6
import {
emitter,
listeners
} from '../mixins'
const NATIVE_COMPONENT_TYPES = ['u-input', 'u-textarea']
function getForm (weex) {
const modulePlus = weex.requireModule('plus')
return {
name: 'Form',
mixins: [emitter, listeners],
data: function data () {
return {
childrenList: []
}
},
listeners: {
'@form-submit': '_onSubmit',
'@form-reset': '_onReset',
'@form-group-update': '_formGroupUpdateHandler'
},
methods: {
_onSubmit ($event) {
const data = this._getNativeFormData() || {}
this.childrenList.forEach(function (vm) {
if (vm._getFormData && vm._getFormData().key) {
data[vm._getFormData().key] = vm._getFormData().value
}
})
this.$trigger('submit', {
value: data
})
},
_onReset ($event) {
this.$trigger('reset', {})
this._getNativeFormData(true)
this.childrenList.forEach(function (vm) {
vm._resetFormData && vm._resetFormData()
})
},
_formGroupUpdateHandler ($event) {
if ($event.type === 'add') {
this.childrenList.push($event.vm)
}
else {
const index = this.childrenList.indexOf($event.vm)
this.childrenList.splice(index, 1)
}
},
_getNativeFormData (isClear) {
const data = {}
function find (nodes) {
nodes.forEach(function (node) {
if (NATIVE_COMPONENT_TYPES.indexOf(node.tag) >= 0 && node.data.attrs && node.data.attrs['name']) {
if (isClear) {
node.elm.setValue('')
}
else {
data[node.data.attrs['name']] = modulePlus.getValue(node.elm.nodeId)
}
}
if (node.children) {
find(node.children)
}
})
}
find(this.$vnode.componentOptions.children)
return data
}
},
render (createElement) {
const _vm = this
return createElement('view', _vm._g({}, _vm.$listeners), [_vm._t('default')], 2)
}
}
}
export default function init (Vue, weex) {
Vue.component('form', getForm(weex))
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册