vue.js - 通过 WP REST API 的 Vue.js 导航子菜单
问题描述
受 Sarah Drasner 的 Smashing Magazine 文章用 Vue 替换 jQuery的启发,我在我的 Wordpress 主题中用 Vue 替换了所有 jQuery。事情进展顺利,因为我已经替换了模态、表单验证/提交等功能。我什至通过谷歌的页面速度洞察工具提高了我的页面速度等级。
我的最后一块拼图是完成我的导航菜单。菜单已构建并且可以正常工作,但我对此并不满意。我的主要不满是有条件地渲染子菜单更好。例如,没有子项的菜单项会收到一个空子项:
<ul class="submenu"></ul>
这是我到目前为止所拥有的:
这是我的导航菜单数据的形状:https ://api.myjson.com/bins/jfld4
重要的属性定义:
- “obeject_id”是一个唯一标识符
- “post_parent”是指导航项目的父“object_id”
- 注意通知顶级菜单项具有“post_parent:0”
这是我用于渲染菜单的 Vue 代码:" https://codepen.io/JosephAllen/pen/zLQqRr?editors=0011
<ul class="menu" id="primary-menu">
<menu-item
v-for="item in navItems"
v-if="item.post_parent == 0"
:key="item.object_id"
:class="{active: item.active}"
v-bind:url="item.url"
v-bind:object_id="item.object_id"
v-bind:post_parent="item.post_parent"
v-bind:title="item.title">
<ul class="sub-menu">
<menu-item
v-for="subItem in navItems"
:key="subItem.object_id"
v-if="subItem.post_parent == item.object_id"
v-bind:object_id="subItem.object_id"
v-bind:url="subItem.url"
v-bind:ID="subItem.ID"
v-bind:post_parent="subItem.post_parent"
v-bind:title="subItem.title">
</menu-item>
</ul>
</menu-item>
</ul>
解决方案
在您的<ul class="sub-menu">
元素上,包含v-if
或v-show
测试该项目是否包含任何子项目(例如<ul class="sub-menu" v-show="hasSubItems">
,一旦您hasSubItems
当然计算过)。查看Vue 文档中的条件渲染。
推荐阅读
- angular - 如何更新 FormArrays 中的值
- c# - 是否可以使用 SDK4 从带有 Bot 的 MS Teams 获取用户电子邮件?
- ms-access - 如何使用 vb6.0 在 Ms Access 中获取最后一个插入 ID
- fullcalendar - FullCalendar 4 - 向事件对象添加然后访问其他值
- php - 如何在mysql数据库中显示图像和描述
- java - 预检中的 Access-Control-Allow-Methods 不允许方法 PATCH
- java - 调整程序屏幕大小时如何缩放图像?
- algorithm - 改进用于计算相关性的 O(m+n) 算法?
- python - 使用 Tensorflow/PyTorch 加速自定义函数的最小化
- javascript - 如何在反应中使用相同的按钮允许位置权限和撤销权限?