Javascript Vue+;创建的嵌套组件

Javascript Vue+;创建的嵌套组件,javascript,vue.js,Javascript,Vue.js,有没有办法在vue.js中创建嵌套组件 <newform> <field></field> <field></field> <field></field> <field></field> <submit></submit> </newform> form.js Vue.http.headers.common['X

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

<newform>
    <field></field>
    <field></field>
    <field></field>
    <field></field>
    <submit></submit>
</newform>
form.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')
    }
});
 
module.exports = {
    template: "Hallo Welt",     
    props: ['url', 'method'],    
    components: {
        'field': require('./field')
    },    
    created: function() {
        console.log("Form Component created");
    }
}
 
 
module.exports = {    
    template: 'Ein Text feld',    
    props: ['name', 'type'],   
    create: function() {
        console.log("Field Component created");
    }
}
module.exports = {    
  template: 'Ein Text feld<slot></slot>',    
  props: ['name', 'type'],   
  create: function() {
    console.log("Field Component created");
  }
}
field.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')
    }
});
 
module.exports = {
    template: "Hallo Welt",     
    props: ['url', 'method'],    
    components: {
        'field': require('./field')
    },    
    created: function() {
        console.log("Form Component created");
    }
}
 
 
module.exports = {    
    template: 'Ein Text feld',    
    props: ['name', 'type'],   
    create: function() {
        console.log("Field Component created");
    }
}
module.exports = {    
  template: 'Ein Text feld<slot></slot>',    
  props: ['name', 'type'],   
  create: function() {
    console.log("Field Component created");
  }
}

您可以使用以下组件:


您希望在
中呈现
,因此需要在
新表单
模板中显示
字段
模板。像这样

form.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')
    }
});
 
module.exports = {
    template: "Hallo Welt",     
    props: ['url', 'method'],    
    components: {
        'field': require('./field')
    },    
    created: function() {
        console.log("Form Component created");
    }
}
 
 
module.exports = {    
    template: 'Ein Text feld',    
    props: ['name', 'type'],   
    create: function() {
        console.log("Field Component created");
    }
}
module.exports = {    
  template: 'Ein Text feld<slot></slot>',    
  props: ['name', 'type'],   
  create: function() {
    console.log("Field Component created");
  }
}
module.exports={
模板:“Ein文本字段”,
道具:['name','type'],
创建:函数(){
console.log(“创建的字段组件”);
}
}
另一点是在
app.js
中要求
field.js
,而不是
form.js

这是一个例子


希望对您有所帮助。

您所描述的功能在Vue中称为a。它允许您通过在其模板中使用特殊的
标记,将内容嵌套到所包含的组件中

查看该链接时,重要的是要注意组件不在您试图暗示的父子关系中。您的
表单
不需要在其组件下指定
字段
。它有一个插槽,它不在乎里面会出现什么


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

可以添加实际渲染的DOM吗?另外,field.js上的“create”函数应该是“create”。