javascript - Vue + 嵌套组件创建

标签 javascript vue.js

有没有办法在 vue.js 中创建嵌套组件?

<newform>
    <field></field>
    <field></field>
    <field></field>
    <field></field>
    <submit></submit>
</newform>

在我的例子中,只有 newform 组件被渲染,而不是嵌套组件。

我的代码:

app.js

Vue.http.headers.common['X-CSRF-TOKEN'] = document.querySelector('#token').getAttribute('value');
Vue.config.debug = true;
Vue.config.async = true;
 
/**
 * The base Vue Instance
 */
new Vue({
    el: '#app',
    components: {
        'new-form': require('./components/form')
    }
});
 

form.js

module.exports = {
    template: "Hallo Welt",     
    props: ['url', 'method'],    
    components: {
        'field': require('./field')
    },    
    created: function() {
        console.log("Form Component created");
    }
}
 
 

field.js

module.exports = {    
    template: 'Ein Text feld',    
    props: ['name', 'type'],   
    create: function() {
        console.log("Field Component created");
    }
}

Link to code sample

最佳答案

您描述的功能称为 slot在 Vue 中。它允许您使用特殊的 <slot> 将内容嵌套在您要包含的组件中。在其模板中标记。 Here's an example .

查看该链接,重要的是要注意组件不在您试图暗示的父子关系中。你的form不需要指定 field在其组件下。它有一个槽,它不关心槽中会出现什么。

两者都是 formfield应在您的 app.js 中的组件下指定,这是完成所有繁重工作的地方,也是包含两个组件的地方。

关于javascript - Vue + 嵌套组件创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31115200/

相关文章:

javascript - 对于每个元素,javascript 删除父 div 并替换为自己的 div

Eclipse 无法在网页编辑器中打开 .vue 文件

javascript - AngularJs 将数组绑定(bind)到复选框

javascript - AngularJS ng-repeat过滤器到子节点

javascript - onkeyup vue js获取文本字段值

javascript - props 值未在 vuejs 中渲染

javascript - 如何将 vue 应用程序包含在另一个 vue 应用程序中?

javascript - 将 AOS 库与 Vue 结合使用

javascript - Jquery 滑动切换不显示点击内容

javascript - 扩展容器和播放视频时隐藏 DIV 中的内容