102 lines
2.5 KiB
Vue
102 lines
2.5 KiB
Vue
|
<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>
|