将自定义模板渲染到Vue.js渲染功能中

时间:2018-04-03 10:12:18

标签: javascript vue.js

Vue render function可以从外部接收零件模板吗?

如果有像下面这样的渲染函数:

var custom_form_modal = function ( context, custom_form ) {

  context.$Modal.info({
    render: (h) => {
      return h('div', {})
    }
  })
... 

custem_form,例如像bellow:

<Form ref="formValidate" :model="formValidate" :rules="ruleValidate" :label-width="80">
    <FormItem label="Name" prop="name">
        <Input v-model="formValidate.name" placeholder="Enter your name"></Input>
    </FormItem>
    <FormItem label="E-mail" prop="mail">
        <Input v-model="formValidate.mail" placeholder="Enter your e-mail"></Input>
    </FormItem>
    <FormItem label="City" prop="city">
        <Select v-model="formValidate.city" placeholder="Select your city">
            <Option value="beijing">New York</Option>
            <Option value="shanghai">London</Option>
            <Option value="shenzhen">Sydney</Option>
        </Select>
    </FormItem>
</Form>

或任何可以作为表单解释的javascript类型。

我想把它作为custom_form,然后渲染到div(你会看到custom_form_modal)。

有没有办法实现这个目标?

修改-1

我通过函数custom_form_modal渲染模板,然后我可以在按钮单击事件中显示模态,然后我不需要在调用vue文件的<template>中编写代码。这是我的要求。

1 个答案:

答案 0 :(得分:1)

最后,我阅读了document,并找到了存档的解决方案:

var custom_form_modal = function (context,  custom_form_component ) {

  context.$Modal.info({
    render: (h) => {
      return h('div', {

      },[
        h(custom_form_component, { props: {} })
      ])
    }
  })
}

使用custom_form_modal

import custom_form from '../components/combined_table/components/custom_form.vue'

  export default {

    methods: {
      handleStart() {
        Util.custom_form_modal(this, custom_form)
      }
    },
    components: {
      custom_form
    }
  };