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.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
< cn >
# # # # 弹出层中的新建表单
当用户访问一个展示了某个列表的页面 , 想新建一项但又不想跳转页面时 , 可以用 Modal 弹出一个表单 , 用户填写必要信息后创建新的项 。
< / cn >
< us >
# # # # Form in Modal to Create
When user visit a page with a list of items , and want to create a new item . The page can popup a form in Modal , then let user fill in the form to create an item .
< / us >
< template >
< div >
< a -button type = "primary" @click ="showModal" >
New Collection
< / a -button >
< collection -create -form
ref = "collectionForm"
:visible ="visible"
@cancel ="handleCancel"
@create ="handleCreate"
/ >
< / div >
< / template >
< script >
const CollectionCreateForm = {
props : [ 'visible' ] ,
beforeCreate ( ) {
this . form = this . $form . createForm ( this , { name : 'form_in_modal' } ) ;
} ,
template : `
<a-modal
:visible="visible"
title='Create a new collection'
okText='Create'
@cancel="() => { $ emit('cancel') }"
@ok="() => { $ emit('create') }"
>
<a-form layout='vertical' :form="form">
<a-form-item label='Title'>
<a-input
v-decorator="[
'title',
{
rules: [{ required: true, message: 'Please input the title of collection!' }],
}
]"
/>
</a-form-item>
<a-form-item label='Description'>
<a-input
type='textarea'
v-decorator="['description']"
/>
</a-form-item>
<a-form-item class='collection-create-form_last-form-item'>
<a-radio-group
v-decorator="[
'modifier',
{
initialValue: 'private',
}
]"
>
<a-radio value='public'>Public</a-radio>
<a-radio value='private'>Private</a-radio>
</a-radio-group>
</a-form-item>
</a-form>
</a-modal>
` ,
} ;
export default {
components : { CollectionCreateForm } ,
data ( ) {
return {
visible : false ,
} ;
} ,
methods : {
showModal ( ) {
this . visible = true ;
} ,
handleCancel ( ) {
this . visible = false ;
} ,
handleCreate ( ) {
const form = this . $refs . collectionForm . form ;
form . validateFields ( ( err , values ) => {
if ( err ) {
return ;
}
console . log ( 'Received values of form: ' , values ) ;
form . resetFields ( ) ;
this . visible = false ;
} ) ;
} ,
} ,
} ;
< / script >