登录
首页 >  文章 >  前端

Vue.component 组件同时加载失败:为什么只显示一个组件?

时间:2024-12-21 22:27:44 410浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《Vue.component 组件同时加载失败:为什么只显示一个组件?》,文章讲解的知识点主要包括,如果你对文章方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

Vue.component 组件同时加载失败:为什么只显示一个组件?

组件同时加载失败:仅显示一个组件

问题描述:

在 html 代码中同时包含 <header-bar/> 和 <nav-bar/> 两个 vue.component 组件,但只显示 <header-bar/> 组件,<nav-bar/> 组件被忽略。

代码示例:

<div class="content">
    <header-bar/>
    <nav-bar/>
</div>

解决方案:

将 <header-bar/> 和 <nav-bar/> 转换为自闭合组件,即使用 <header-bar></header-bar> 和 <nav-bar></nav-bar> 形式。

修改后的代码:

<div class="content">
    <header-bar></header-bar>
    <nav-bar></nav-bar>
</div>

这样修改是因为 vue.component 组件的默认行为是将其自身和所有子元素视为模板中的插槽内容。因此,将组件作为自闭合元素可以防止其插槽内容覆盖其他组件的插槽内容。

完整的修改代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://unpkg.com/vue"></script>
    <title>Document</title>
</head>

<body>
    <div class="content">
        <header-bar></header-bar>
        <nav-bar></nav-bar>
    </div>
</body>

<script>
    Vue.component("header-bar", {
        data: function() {
            return {
                homeHref: 'https://www.cnblogs.com',
                logo: 'https://cn.vuejs.org/images/logo.png',
                title: 'Vue官网图标',
                hotTel: '实例'
            }
        },
        template: `
            <header>
                <div class="heading">
                    <a :href="homeHref" class="logo">
                        <img :src="logo" :alt="title" />
                    </a>
                    <div class="hotphone">
                        <div class="icon"></div>
                        <div class="text">
                            <h2>全国免费加盟热线:</h2>
                            <h1>{{hotTel}}</h1>
                        </div>
                    </div>
                </div>
            </header>
    `
    });
    Vue.component("nav-bar", {
        data: function() {
            var n = 0;
            if (window.navActive) {
                n = window.navActive;
            }
            return {
                navList: [{
                    href: 'https://www.cnblogs.com',
                    title: '博客园'
                }],
                navActive: n
            }
        },
        template: `
        <nav>
            <div class="navbar">
                <template v-for="(nav,index) in navList">
                     <a :href="nav.href" class="navmenu" v-html="nav.title"></a>
                </template>
            </div>
        </nav>
    `,
        mounted: function() {
            $("a.navmenu").eq(this.navActive).addClass("active");
        }
    });

    new Vue({
        el: '.content',
    })
</script>

</html>

今天关于《Vue.component 组件同时加载失败:为什么只显示一个组件?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>