如何在 Laravel 的其他 Vue/Vuetify 组件中嵌入 Vue/Vuetify 组件?

Posted

技术标签:

【中文标题】如何在 Laravel 的其他 Vue/Vuetify 组件中嵌入 Vue/Vuetify 组件?【英文标题】:How do I imbed Vue/Vuetify components within other Vue/Vuetify components within Laravel? 【发布时间】:2021-03-27 15:52:21 【问题描述】:

今年初我给自己定了一个目标,学习 Laravel、Vue 和 Vuetify,这些我以前都没有使用过。这已被证明是相当困难的,因为 Laravel 的大多数教程和视频都没有涉及 Vue,大多数 Vue 材料都没有涉及如何在 Laravel 中使用 Vue,而且到目前为止我找到的材料都没有讨论如何使用使用 Vue 组件在 Laravel 环境中进行 Vuetify。这意味着很难找到我的一些问题的答案。我现在在 Laravel 中使用了 Vue,也让 Vuetify 在基本级别上工作,但我仍在为某些基础知识而苦苦挣扎。

具体来说,我试图弄清楚如何制作一个在 Laravel 中使用 Vuetify 的 Vue 组件,以在 Laravel 中嵌入 另一个 Vue 组件。我已经编写了一个基本的待办事项列表 CRUD,它在一个 Vue 组件中运行得相当好。我想知道是否可以在单独的 Vue 组件(使用 Vuetify)中分别拥有我的 Logo(在 v-toolbar 中)和页脚,然后将它们嵌入到主组件中?

如果它可能的,它会是什么样子?我尝试将我的徽标(它是一个 v-toolbar)放在它自己的组件中,但我无法正确注册它。

这是我的组件,名为 Logo.vue:

<template>
    <v-toolbar dark src="images/fence.jpg" max->
    <v-app-bar-nav-icon></v-app-bar-nav-icon>
      <v-toolbar-title>Different Logo</v-toolbar-title>
    </v-toolbar>
</template>

<script>
export default  

</script>

<style scoped>
</style>

这是我的主要组件,称为 VuetifyComponent.vue,大部分主体被剥离,因为它无关紧要:

<template>
  <v-app>

    <v-toolbar
      dark
      src="https://cdn.vuetifyjs.com/images/backgrounds/vbanner.jpg"
      max-
    >
      <v-app-bar-nav-icon></v-app-bar-nav-icon>
      <v-toolbar-title>LaraVuetify To Do List</v-toolbar-title>

    </v-toolbar>

    <Logo></Logo>

  </v-app>
</template>

这是我的 app.js 尝试注册两个组件:

require('./bootstrap');

window.Vue = require('vue');

import Form from './Form'
window.Form = Form

import Vuetify from 'vuetify'
Vue.use(Vuetify);
    
Vue.component('vuetify-component', require('./components/VuetifyComponent.vue').default);
Vue.component('Logo', require('./components/Logo.vue').default);

const app = new Vue(
    el: '#app',
    vuetify: new Vuetify()
);

这是来自我的浏览器的消息:

[Vue warn]: Unknown custom element: <Logo> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

found in

---> <VuetifyComponent> at resources/js/components/VuetifyComponent.vue
       <Root>

【问题讨论】:

【参考方案1】:

原来我做错了一件小事。 logo 组件应该使用小写的“logo”而不是“Logo”注册,换句话说:

Vue.component('logo', require('./components/Logo.vue').default);

我的 VuetifyComponent 中的标签应该是 &lt;logo&gt;&lt;/logo&gt;

通过这些微小的更改,我已经证明即使两个 Vue 组件都使用 Vuetify 并且两个组件都在 Laravel 中,我也可以将一个组件嵌入到另一个组件中。

【讨论】:

以上是关于如何在 Laravel 的其他 Vue/Vuetify 组件中嵌入 Vue/Vuetify 组件?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 如何访问相关对象其他关系

Laravel - 如何使用 ajax 显示其他表中的数据

我如何在 laravel 中为 spatie 包(ACL 管理)中的其他角色分配用户列表权限?

如何在 laravel Echo 中获取连接状态/其他事件

我如何扩展laravel转换器(任何其他组件)?

如何更改 laravel 中的用户模型以使用其他表进行身份验证而不是用户?