javascript - 如何在 v-bind 和 v-for 中获取要使用的对象
问题描述
考虑:
<ol class="breadcrumb arr-right">
<li v-for="(url,name, index) in links" v-bind:class=" (index == (links.length -1)) ? 'breadcrumb-item active' : 'breadcrumb-item'">
<a v-bind:href="url">{{ name }}</a>
</li>
</ol>
这里的问题links.length
总是undefined
. 除了由于链接状态而导致的三元运算外,这一切都很好undefined
。我如何links
访问v-bind
?
解决方案
因为links
is an object
,links.length
总是undefined
因为 anobject
没有length
属性(但 anArray
有)。
object
您可以通过其密钥长度来确定其大小。请注意,它Object.keys()
给出了一个Array
的object
键,因此您可以使用Array.prototype.length
结果来获取对象大小。
const class = index === Object.keys(links).length - 1
? 'breadcrumb-item active'
: 'breadcrumb-item'
您的类绑定的语法不太正确。您可以像这样组合对象语法和数组语法:
<li v-bind:class="[ { 'active': index === Object.keys(links).length - 1 }, 'breadcrumb-item' ]">
或者只使用对象语法:
<li class="breadcrumb-item" v-bind:class="{ 'active': index === Object.keys(links).length - 1 }">
但是,如果您的目标是设置最后一个<li>
元素的样式,那么 CSS 中可能有更简单的方法。不要应用.breadcrumb-item.active
到最后一项,而是使用:last-of-type
:
.breadcrumb-item:last-of-type {
/* your styles here */
}
推荐阅读
- php - 使用 Laravel 助手转换数据
- node.js - Node.js Rest Api 和 Socket.io 和 typescript
- math - uart发送8051
- azure - 为什么 Chrome 允许此静默 Azure OAuth 授权请求,但不允许 Firefox 和 Edge?
- javascript - 如何在 for 循环中等待异步查询完成?
- javascript - 动态添加字段并计算总和
- ffmpeg - FFmpeg:覆盖 GIF 旋转和缩放
- lua - 使用自定义 lua/luajit 重载/注入已编译程序的 lua 运行时
- jquery - 当 .html 函数添加输入时,输入不会向 FORM 添加值
- python - 在 for 循环中动态创建变量