- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个组件,它可以使用 Quasar Framework 中的 QExpansionItem 使用嵌套对象结构进行缩放。
我制作了一个递归组件来尝试实现这一点,但没有像我希望的那样显示。这些项目以错误的方式重复,我不知道为什么。
我正在使用 Quasar V1.0.5,我使用 QexpansionItem 的组件
这里是菜单对象
[
{
name: '1',
icon: 'settings',
permission: 'configuration',
description: '1',
url: '',
children: [
{
name: '1.1',
permission: 'configuration',
url: '/insuranceTypes',
icon: 'add',
description: '1.1'
},
{
name: '1.2',
permission: 'configuration',
url: '/insuranceTypes2',
icon: 'phone',
description: '1.2'
}
]
}, {
name: '2',
icon: 'person',
permission: 'configuration',
url: 'contacts',
description: '2'
}
]
MenuComponent.vue 我调用侧树菜单组件的地方
<q-list
bordered
class="rounded-borders q-pt-md"
>
<side-tree-menu :menu="menu"></side-tree-menu>
</q-list>
SideTreeMenuComponent.vue
<template>
<div>
<q-expansion-item
expand-separator
:icon="item.icon"
:label="item.name"
:caption="item.description"
header-class="text-primary"
:key="item.name"
:to="item.url"
v-for="(item) in menu"
>
<template>
<side
v-for="(subitem) in item.children"
:key="subitem.name"
:menu="item.children"
>
</side>
</template>
</q-expansion-item>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
name: 'side',
props: ['menu', 'children'],
data () {
return {
isOpen: false,
algo: 0
}
},
mounted () {
console.log('menu', this.menu)
},
computed: {
...mapGetters('generals', ['can'])
}
}
</script>
元素1.1和1.2重复了不知道怎么改
最佳答案
我遇到了同样的问题,没有在网上找到任何解决方案。我设法让它与下面的方法一起工作。这可能对将来的某人有帮助:)
我在这里添加了 2 个最重要的代码文件,它们将使此工作正常进行。我的其余设置只不过是通过 quasar create [project-name] CLI 命令创建的内容。
当您使用上述命令创建项目时,您将获得 MainLayout.vue 和 EssentialLink.vue 文件。我已经修改了这些以获得所需的结果。
**我的MainLayout.vue文件——模板**
下面的EssentialLink 是组件,它在主布局页面的抽屉内使用 q-expansion-item 递归地呈现菜单。
<template>
<q-layout view="hHh Lpr lFf">
<q-header elevated>
<q-toolbar>
<q-btn flat dense round icon="menu" aria-label="Menu"
@click="leftDrawerOpen = !leftDrawerOpen" />
<q-toolbar-title>
{{appTitle}}
</q-toolbar-title>
<div>Release {{ appVersion }}</div>
</q-toolbar>
</q-header>
<q-drawer
v-model="leftDrawerOpen" show-if-above bordered
content-class="bg-grey-1">
<q-list>
<q-item-label
header
class="text-grey-8">
Essential Links
</q-item-label>
<EssentialLink
v-for="link in essentialLinks"
:key="link.title"
v-bind="link">
</EssentialLink>
</q-list>
</q-drawer>
<q-page-container>
<router-view />
</q-page-container>
</q-layout>
</template>
MainLayout.vue 文件的
script 部分。需要注意的关键属性 - children 和 level。
<script>
import EssentialLink from 'components/EssentialLink.vue'
export default {
name: 'MainLayout',
components: {
EssentialLink
},
data () {
return {
appTitle: 'Project Name',appVersion: 'v0.1',leftDrawerOpen: false,
essentialLinks: [
{
title: 'Search', caption: 'quasar.dev', icon: 'school',
link: 'https://quasar.dev',
level: 0,
children: [{
title: 'Documents', caption: 'quasar.dev',icon: 'school',
link: 'https://quasar.dev',
level: 1,
children: [{
title: 'Search (level 3)',
caption: 'quasar.dev',
icon: 'school',
link: 'https://quasar.dev',
level: 2,
children: []
}]
}]
},
{
title: 'Github',caption: 'github.com/quasarframework',
icon: 'code',link: 'https://github.com/quasarframework',
level: 0,
children: [{
title: 'Github Level 2',caption: 'quasar.dev',icon: 'school',
link: 'https://quasar.dev',level: 1,
children: []
}]
},
{
title: 'Forum',caption: 'forum.quasar.dev',
icon: 'record_voice_over',link: 'https://forum.quasar.dev',
level: 0,
children: [{
title: 'Forum Level 2',caption: 'quasar.dev',icon: 'school',
link: 'https://quasar.dev',
level: 1,
children: []
}]
}
]
}
}
}
</script>
最后是 EssentialLink.vue 组件
下面的代码在其 children 属性中遇到多于 1 个项目时会递归调用自身。级别属性用于在向下钻取时缩进菜单。
<template>
<div>
<div v-if="children.length == 0">
<q-item clickable v-ripple :inset-level="level">
<q-item-section>{{title}}</q-item-section>
</q-item>
</div>
<div v-else>
<div v-if="children.length > 0">
<!-- {{children}} -->
<q-expansion-item
expand-separator
icon="mail"
:label="title"
:caption="caption"
:header-inset-level="level"
default-closed>
<EssentialLink
v-for="child in children"
:key="child"
v-bind="child">
</EssentialLink>
</q-expansion-item>
</div>
<div v-else>
<q-item clickable v-ripple :inset-level="level">
<q-item-section>{{title}}</q-item-section>
</q-item>
</div>
</div>
</div>
</template>
*EssentialLink.vue 组件的脚本部分
<script>
export default {
name: 'EssentialLink',
props: {
title: {
type: String,
required: true
},
caption: {
type: String,
default: ''
},
link: {
type: String,
default: '#'
},
icon: {
type: String,
default: ''
},
level: {
type: String,
default: ''
},
children: []
}
}
</script>
关于vue.js - 如何使用 Quasar QexpansionItem 制作递归菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57624663/
我有一个组件,我将在我的网络应用程序的每个页面中使用它。为了简化我的工作,我如何全局注册这个组件?我用过一次 nuxt,npm 用起来很简单 @nuxtjs/global-components . Q
我开始使用 quasar,我希望输入居中,但以 quasar 方式(使用 quasar 可用的类、组件和指令)。我不想用 !important 强制风格。这是代码笔 https://codepen.i
我使用 vue add quasar 将 Quasar 添加到我预先存在的 Vue CLI 项目中. 现在我正在尝试使用 Loading plugin ,但我无法让它工作。 这是我与 Quasar/V
我开发了一个类星体应用程序,并使用“dotenv”插件来解析 .env 文件。 有时我需要对变量进行临时更改,例如仅对当前运行使用不同的后端地址,而我不想更改 .env 文件。 如果有办法在控制台中传
我正在为我的项目使用类星体框架,但我在 qtable 组件上遇到了问题。我通过@row-click 事件使表格行可点击。这很好用,但我的 table 上有一些 Action 按钮单元格,当我单击任何
如何在类星体框架中更改图标?我已经尝试更改 index.template.html 中的 href 但失败了 最佳答案 你需要在三个链接标签中更改href,它可以工作。 试试这个。 关于quas
我正在尝试根据一个单元格中的值更改整行的样式。为此,我使用了模板样式,但它只允许我更改一个单元格的样式。 但是,是否可
我正在尝试在 Quasar Framework 中创建一个圆形头像 为此,我使用 q-btn 和 q-vatar 但 Gravatar 的图像是方形的,这使我在方形图像周围显示白色背景
我第一次尝试使用 Quasar 来构建 SPA。我的路由器有问题。我已经在 src/pages/LoginPage.vue 中构建了一个简单的登录页面,然后将适当的路由对象添加到 src/router
我在 q 表中显示数据时遇到问题。问题是因为我已将数据作为对象的对象存储在 store 中,但 q-table 需要数据作为对象数组。这是我的代码 store.js import Vue from '
1)有没有办法实现类似于datatables的quasar表列过滤? https://datatables.net/extensions/fixedheader/examples/options/co
Quasar Button 组件的大小可以调整并且来自docs按钮中的图标似乎应该相应地改变大小。例如,从文档中查看这张图片: 当我尝试图标保持相同大小(按钮改变)。我的代码: 怎么了? 最
所以我有一个基本的布局:
我正在使用 Quasar 框架。并想在框架组件的预设上添加第三个参数。 这是用于 Q-popup-edit 的save/cancel 事件: 语法: @save -> function(value,
我们有几个使用 Quasar 构建的 SPA。一切都很好,但现在我们看到某些组件可以提取到共享组件中。 计划是提取相关代码并发布到我们的私有(private) npm 存储库。如何构建然后发布使用 Q
我看过Reuse Quasar Dialog plugin with custom component on another component没有任何答案,我有接近相同的问题,但我的代码结构有点不同
我正在测试 Kotlin Quasar actor 示例。 Quasar and Kotlin – a Powerful Match 所以问题是,这个例子是否过时了,是否有任何文档可以让我找到如何使用
我希望优化目前使用 HTTP/REST 进行内部节点到节点通信的微服务架构。 一种选择是在服务中实现背压功能,(例如)通过将 Quasar 之类的东西集成到堆栈中。这无疑会改善情况。但我看到了一些挑战
我是 Quasar 框架的新手。有人可以解释如何在全局使用中加载类星体组件吗? (我的应用程序中的每个地方) 我的 main.js 是这样的: import Vue from 'vue' import
我正在使用 Quasar JS 版本 v0.17.19,我希望在 mouseout 时布局抽屉进入迷你状态,但可折叠元素保持可扩展状态,仅显示图标。鼠标移开布局抽屉进入迷你状态;但是,已展开的元素已折
我是一名优秀的程序员,十分优秀!