javascript - 在另一个属性中引用元素属性

标签 javascript vue.js vuex

我正在尝试访问动态属性 (:class) 内的属性 (fieldType, value)

<div fieldType="favoriteSports" 
     @click="update_favorite_sports" 
     value="Soccer"
     :class="{selected: sportsForm[fieldType].indexOf(value) != -1 }">
     Soccer
</div>

这会记录以下错误:

Property or method "fieldType" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.

我想它期望 fieldType 是一个数据属性。

如何实现这一点,或者这是一种反模式?

最佳答案

使用 v-for 填充值会将整个对象暴露给模板语法

我假设你的对象系统,但它对于不同的结构是通用的。

<div
    v-for="sport in sports"
    :fieldType="sport.type"
    @click="update_favorite_sports(sport)" 
    :value="sport.name"
    :class="{selected: sportsForm[sport.type].indexOf(sport.name) != -1 }"
>
    Soccer
</div>

尽管说实话,您不再需要 valuefieldType 属性,除非您在某处引用它们。

这将允许您使用

methods: {
    update_favorite_sports (sport) {
        // Whatever your code is guessing something like
        let index = this.sportsForm[sport.type].indexOf(sport.name)
        if(index >= 0) {
            this.sportsForm[sport.type].splice(index, 1)
            return
        }
        this.sportsForm[sport.type].push(sport.name)
    }
}

这样 div 的作用就像一个单选按钮。

关于javascript - 在另一个属性中引用元素属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41944054/

相关文章:

javascript - vue-router 为什么当我刷新一个 URL 包含 id 的页面时,我会丢失页面的所有设计

javascript - 检查是否存在已加载的 JavaScript 库供我的应用程序使用,否则加载我自己的版本?

javascript - 如何将每个带有 class 的 ul append 到其上方最接近的文章标签?

javascript - 如何在导出中包含导入的模块?

javascript - 如何在 Nuxt 中从一个 Vuex 状态访问另一个状态?

javascript - Vee 验证在 vue 设置后获取先前的值

javascript - 在 CKEditor 3 中对所有粘贴的内容使用 "pastefromword"过滤

javascript - 如何阻止重复加载

javascript - 本例中如何使用动态参数(ID)来调用 axios api

javascript - Vuex 观察者错误地触发了两次