导入 Vue (Vue.js) 组件没有错误,但不显示

Posted

技术标签:

【中文标题】导入 Vue (Vue.js) 组件没有错误,但不显示【英文标题】:Importing Vue (Vue.js) Component Results in No Errors, But Doesn't Display 【发布时间】:2017-12-17 09:44:34 【问题描述】:

Vue 的基本实现在这里作为测试运行,我在将数据分解为组件时遇到了一些问题。这是 html

<body>
    <header id="main-header">
       <custom-header></custom-header>
    </header>
</body>

我正在实例化一个 Vue 实例并将其绑定到#main-header:

import CustomHeader from '../header.vue';

const header = new Vue(
    el: '#main-header',
    data: chx,
    components: 
        'custom-header': CustomHeader
    ,
    methods: 
        run: function() 
            console.log('run');
        ,
        print: function() 
            window.print()
        ,
        save: function() 
            console.log('save');
        
    
);

以及导入的模板:

<template>
    <div class="header-menu">
        <img class="logo" src="images/logo.png">
    </div>
    <div class="header-menu">
        <h1 id="date-range-label"><span v-show="dates.startFormatted">dates.startFormatted - dates.endFormatted</span></h1>
        <i v-on:click="settingsVisible = !settingsVisible" id="settings" class="fa fa-2x fa-cog settings-icon no-print"></i>
    </div>
</template>

控制台或 Webpack 进程不会记录任何错误。不知道从这里去哪里,因为没有任何记录。 &lt;header&gt; div 在生成的 HTML 中保持为空。

【问题讨论】:

你的模板需要有一个根元素 @thanksd 很抱歉,我不知道你的意思。 &lt;div&gt; 元素的根中有两个 &lt;div&gt; 元素。您需要将两者都包装在另一个 &lt;div&gt; 中或更改您的整体结构。 【参考方案1】:

您的自定义标题组件在其模板的根部有两个div 元素。一个组件只能有一个根元素。

在您的情况下,将内容包装在 div 元素中可能是最简单的:

<template>
  <div>
    <div class="header-menu">
      <img class="logo" src="images/logo.png">
    </div>
    <div class="header-menu">
      <h1 id="date-range-label"><span v-show="dates.startFormatted">dates.startFormatted - dates.endFormatted</span></h1>
      <i v-on:click="settingsVisible = !settingsVisible" id="settings" class="fa fa-2x fa-cog settings-icon no-print"></i>
    </div>
  </div>
</template>

【讨论】:

这开始抛出错误,这绝对是进步。我收到的错误是:"TypeError: Cannot read property 'startFormatted' of undefined" 但是,此属性包含在 chx 的父 Vue 数据对象中。使对象中包含的数据对组件本身可用的最佳做法是什么? 如果你不通过 props 向子组件提供数据,它将无法访问它。这是一个单独的问题,我会阅读docs on components。

以上是关于导入 Vue (Vue.js) 组件没有错误,但不显示的主要内容,如果未能解决你的问题,请参考以下文章

带有 Vue js 的打字稿

将 npm 包导入 Vue.js 单文件组件

不构建单页应用程序时,如何构建 Vue.js 单文件组件并导入它们?

Vue Js:在本地使用导入插件 mixin

vue.js组件改变了数据,但是dom并没有刷新

无法从 Vue.js 中的单个文件组件导入 Mixin