Vue.js 使用vue处理本地组件
我有以下代码:Vue.js 使用vue处理本地组件,vue.js,Vue.js,我有以下代码: <my-messages> <message>Hello</message> <message>World</message> </my-messages> 我的组件当前: export default { components: { // Should process <message> sub-component. message:
<my-messages>
<message>Hello</message>
<message>World</message>
</my-messages>
我的组件当前:
export default {
components: {
// Should process <message> sub-component.
message: require('./Messages.Message.vue'),
}
}
导出默认值{
组成部分:{
//应处理子组件。
message:require('./Messages.message.vue'),
}
}
编辑:实际上,
内联模板
似乎将模板中的
混合在一起,而不是嵌套它 内联模板
不是黑客攻击。我认为问题在于您没有在使用my messages
组件的同一位置注册message
组件
因此,将我的消息
作为子组件的父组件无法理解消息
,您也需要在父组件中注册它,当您使用内联模板
时,范围会发生变化,并且内部的任何内容都将被视为内部内容。你可以在地图上找到它
编辑
没有办法让
只能作为
的子级使用,但是如果它被误用,您可以抛出异常
mounted() {
if (!this.$parent.$el.classList.contains('my-message')) {
this.$destroy();
throw new Error('You must wrap the message in a my-message');
}
}
请注意,这假设类
我的消息
在根元素中可用,这样您就可以使用任何包装器元素。该组件代码(导出默认值…
)是您的我的消息
组件吗?是的,它是。这是我代码中的一个片段:对。。。但是如果我做了Vue.component('messages',…)
它将不会在我的实例中全局声明?我喜欢
只在
内部可用(例如,作为
到
。@DavidRodrigues不,很遗憾你不能。我用一种方法编辑了答案,如果它没有按您的意愿使用,就会抛出一个错误
<div class="Messages">
<div class="message">Hello</div>
<div class="message">World</div>
</div>
export default {
components: {
// Should process <message> sub-component.
message: require('./Messages.Message.vue'),
}
}
mounted() {
if (!this.$parent.$el.classList.contains('my-message')) {
this.$destroy();
throw new Error('You must wrap the message in a my-message');
}
}