Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 使用vue处理本地组件_Vue.js - Fatal编程技术网

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');
  }
}