javascript - 如何根据对象属性向渲染图像添加 "active"类?

标签 javascript vue.js vuejs2

我有以下 JSON 文件 - https://ddragon.leagueoflegends.com/cdn/9.14.1/data/en_US/runesReforged.json

如您所见,有 5 个主要 rune 类别,每个类别有 4 个槽,每个槽包含 3 个 rune (第一个槽包含 4 个 rune )。我下面的代码迭代 4 个插槽并渲染每个插槽的所有 rune 的图像。我的最终结果如下所示:

enter image description here

到目前为止一切都很好,除了我想向用户选择的 rune 添加一个事件类。所有选定的 rune 都可以作为名为 match 的数据属性中的属性找到。

data(){
    return {
        match: null
    }
},
methods: {
    primaryPerks(){
        let perksTree = Object.entries(this.$store.state.summonerRunes).find(([key,value]) => value.id === this.match.mainParticipant.stats.perkPrimaryStyle);

        return perksTree[1]
    }
}

它为空,因为该对象是在 GET 请求之后分配的。在该对象中,有名为 perk0、perk1、perk2 和 perk3 的属性,它们是 rune 的 id。我必须以某种方式在渲染图像的迭代中插入一个检查,并在 rune 图像的 id 等于任何 perk 属性的情况下向其添加一个“事件”类。问题是我不确定如何实现该检查。

<div class="runes">
    <div v-for='runes in this.primaryPerks().slots' class="perks">
        <div v-for='rune in runes.runes' class="perk">
            <img class='inactive' :src="'https://ddragon.leagueoflegends.com/cdn/img/' + rune.icon" alt="">
        </div>
    </div>
</div>

最佳答案

那么在某些时候 match 对象看起来像这样?

data(){
    return {
        match: {
           perk0: 8112,
           perk1: 8113,
           perk2: 8115,
           perk3: 8122,
        }
    }
},

如果是这样,这就是如何有条件地附加一个类。

<div class="runes">
    <div v-for='runes in this.primaryPerks().slots' class="perks">
        <div v-for='(rune,index) in runes.runes' class="perk">
            <img :class="{inactive: Object.values(match).find(rune.id)}" :src="'https://ddragon.leagueoflegends.com/cdn/img/' + rune.icon" alt="">
        </div>
    </div>
</div>

我建议您创建 rune 检查方法,该方法返回 true 或 false 并以 id 作为参数。

checkRune(id) {
    return Object.values(match).find(id)
}

那么你的类应该类似于 :class="{inactive: checkRune(rune.id)}

关于javascript - 如何根据对象属性向渲染图像添加 "active"类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58041362/

相关文章:

javascript - 不应该将 onsubmit 设置为 "false"以防止实现表单的操作吗?

javascript - JavaScript 是否有接口(interface)类型(例如 Java 的 'interface' )?

javascript - 动态添加ShareThis按钮时删除或自定义 "via @ShareThis"

javascript - 视觉 : How can you tell whether the control key is pressed or not in a performant manner during mouseover?

javascript - 如何从计算属性 Vue.js 访问数据

javascript - 将 JSON 值动态传递给另一个模板

javascript - 如何只点击一次html元素?

javascript - 处理程序(鼠标、触摸、滚动)在 Vuejs 单文件组件中的 Mapbox-gl-js map 上不起作用

jquery - 与 Webpack 捆绑时无法使 Tether 用于 Bootstrap 4

javascript - 对对象进行 v-for 排序 (Vue2)