<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");
}
}
答案 0 :(得分:3)
您描述的功能在Vue中称为slot。它允许您通过在其模板中使用特殊的<slot>
标记将内容嵌套到您所包含的组件中。 Here's an example
查看该链接,重要的是要注意组件不在您试图暗示的父子关系中。您的form
无需在其组件下指定field
。它有一个插槽,它不关心它中会出现什么。
form
和field
都应在app.js
中的组件下指定,这是完成所有繁重工作的地方,也就是包含这两个组件的地方。
答案 1 :(得分:0)
你可以使用这样的组件: http://jsfiddle.net/hajkrupo/5/
<body>
<encapsulated-component inline-template>
<header>
<cart-status></cart-status>
</header>
<cart></cart>
<item some-prop="1"></item>
<item some-prop="2"></item>
<item some-prop="3"></item>
</encapsulated-component>
</body>
答案 2 :(得分:0)
您想在<field>
中呈现<newform>
,因此您需要在field
模板中显示newform
模板。喜欢这个
<强> form.js 强>
module.exports = {
template: 'Ein Text feld<slot></slot>',
props: ['name', 'type'],
create: function() {
console.log("Field Component created");
}
}
另一点是要求field.js
中的app.js
而不是form.js
。
以下是示例http://www.webpackbin.com/4k9vxYrCl。
希望能帮助你。