Vue.js - 以编程方式设置槽内容

n1_*_*n1_ 3 vue.js

有什么办法可以从组件内部设置/覆盖插槽的内容吗?喜欢

模板:

<div>
    <slot></slot>
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

export default {
    ...
     mounted() {
        this.$slot.render("<button>OK</button>");
     }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用v-html我的元素将内容动态推送到组件模板中,但我的意思不仅仅是纯 HTML,我的意思是带有 Vue 指令的 HTML。喜欢:

JS:

export default {
    ...
     mounted() {
        this.$slot.default.render('<button @click="submit">OK</button>');
     },
    methods: {
        submit() {
            // Here I want to get :)
        }
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

基本上我希望 Vue 在我的组件范围内渲染(如解析和渲染,而不是像innerHTML)某些字符串,并将其放置在我的组件中的某个位置。原因是我通过 AJAX 从服务器获取新内容。

抱歉,经过 2 天的谷歌搜索后我仍然无法理解。

多谢!

Mar*_*arc 6

据此您可以以编程方式实例化组件并插入插槽内容。

import Button from 'Button.vue'
import Vue from 'vue'
var ComponentClass = Vue.extend(Button)
var instance = new ComponentClass({
    propsData: { type: 'primary' }
})
instance.$slots.default = [ 'Click me!' ]
instance.$mount() // pass nothing
this.$refs.container.appendChild(instance.$el)
Run Code Online (Sandbox Code Playgroud)