【问题标题】:Nesting custom tags in Vue在 Vue 中嵌套自定义标签
【发布时间】:2018-01-03 23:31:27
【问题描述】:

我正在构建一个 Laravel / Vue 应用程序,但遇到了一些障碍。我已经能够成功地创建单独的独立组件,但是当我尝试将独立组件嵌套到另一个组件中时,只会显示嵌套的组件。一段代码:

CompanyLogo.vue

<template>
    <figure class="company-logo" :style="{
    width: size,
    height: size,
    backgroundImage: `url(${src})`
  }"></figure>
</template>

LogoUploader.vue

<template>
    <div class="logo-container">
        <company-logo size="65px" :src="`${company.logo.url}`"></company-logo>
    </div>
    <div class="logo-uploaded-details">
        <p>Last updated: {company.logo.last_updated}</p>
        <button class="file-browse-btn">Upload Image</button>
    </div>
</template>

发生的事情是,当在 company.blade.php 我只是有

<logo-uploader></logo-uploader>

应用程序编译并加载,但屏幕上只显示CompanyLogologo-uploaded-details 部分的整个标记根本不会呈现。

我尝试将CompanyLogo 组件的require 添加到LogoUploader 组件的注册中,但这也不起作用。

如果我拆分它们都会显示的组件。问题仅在于它们嵌套后。

有什么想法吗?

【问题讨论】:

    标签: laravel vue.js vue-component


    【解决方案1】:

    Vue 实例和组件必须有一个根元素。在您的 LogoUploader 中,您有两个根元素。

    您需要将它们包装在根目录中。

    <template>
      <div>
        <div class="logo-container">
            <company-logo size="65px" :src="`${company.logo.url}`"></company-logo>
        </div>
        <div class="logo-uploaded-details">
            <p>Last updated: {company.logo.last_updated}</p>
            <button class="file-browse-btn">Upload Image</button>
        </div>
      </div>
    </template>
    

    【讨论】:

    • 哇哦。我不敢相信我不知道。一直以来,我都很幸运,我的其余组件只有一个根元素。非常感谢,伙计!
    • @matcartmill 我实际上找不到它的文档,但是一旦它被你咬了几次你就会记得:)
    猜你喜欢
    • 2016-08-25
    • 2011-12-15
    • 2019-01-23
    • 2014-12-26
    • 2010-09-08
    • 2013-10-14
    • 2010-09-12
    • 1970-01-01
    • 2019-01-29
    相关资源
    最近更新 更多