<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> <script> import { Form } from 'vue-antd-ui' const CollectionCreateForm = Form.create()( { props: ['visible'], render () { const { visible, form } = this const { getFieldDecorator } = form return ( <a-modal visible={visible} title='Create a new collection' okText='Create' onCancel={() => { this.$emit('cancel') }} onOk={() => { this.$emit('create') }} > <a-form layout='vertical'> <a-form-item label='Title'> {getFieldDecorator('title', { rules: [{ required: true, message: 'Please input the title of collection!' }], })( <a-input /> )} </a-form-item> <a-form-item label='Description'> {getFieldDecorator('description')(<a-input type='textarea' />)} </a-form-item> <a-form-item className='collection-create-form_last-form-item'> {getFieldDecorator('modifier', { initialValue: 'public', })( <a-radio-group> <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 { data () { return { visible: false, } }, methods: { showModal () { this.visible = true }, handleCancel () { this.visible = false }, handleCreate () { const form = this.formRef.form form.validateFields((err, values) => { if (err) { return } console.log('Received values of form: ', values) form.resetFields() this.visible = false }) }, saveFormRef (formRef) { this.formRef = formRef }, }, render () { return ( <div> <a-button type='primary' onClick={this.showModal}>New Collection</a-button> <CollectionCreateForm wrappedComponentRef={this.saveFormRef} visible={this.visible} onCancel={this.handleCancel} onCreate={this.handleCreate} /> </div> ) }, } </script>