【问题标题】:Event handling dynamic created buttons in Vue.js v-for loopVue.js v-for 循环中的事件处理动态创建按钮
【发布时间】:2017-10-12 21:23:04
【问题描述】:

我有一个 v-for 循环,其中为每次迭代创建一个按钮。我正在尝试制作一个切换处理程序,单击按钮将切换按钮的颜色。但是由于按钮是动态创建的,所以它们的所有颜色都在变化......

<div class="pets" v-for="pet in pets" :key="pet.id">
    <button class="favorite" v-on:click="toggle">
        <i v-bind:class="[{ 'red' : favorited }, 'material-icons']">favorite</i>
    </button>           
</div>

pets 数组正在被一个 http 调用填充。我的脚本如下所示:

<script>
export default {
    name: 'home',
    data() {
        return {
            pets: [],
            favorited: false
        }
    },
    methods: {
        toggle: function() {
            this.favorited = !this.favorited;
        }
    },
}

Style 标签只是改变颜色

<style scoped>
.red {
    color: red;
}

基本上,我正在尝试创建一个收藏按钮,您可以在其中切换收藏宠物数组中的一个对象。我知道为什么我的方法会激活我所有的按钮。由于收藏夹不是按钮独有的并且来自数据。因此,当 favorited = true 时,“red”类将绑定到我的所有按钮。我的问题是如何将“红色”类绑定到我单击的按钮上?我对 Vue 比较陌生,这让我发疯了,哈哈!有人请告诉我如何解决这个问题。

【问题讨论】:

    标签: button dynamic vue.js vuejs2 vue-component


    【解决方案1】:

    为您的宠物数组中的宠物对象添加一个收藏属性。然后使用该属性。

    <div class="pets" v-for="pet in pets" :key="pet.id">
        <button class="favorite" v-on:click="pet.favorited = !pet.favorited">
            <i v-bind:class="[{ 'red' : pet.favorited }, 'material-icons']">favorite</i>
        </button>           
    </div>
    

    Example.

    如果你不想修改宠物对象,那么here is an alternate way

    【讨论】:

    • 这正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-04-11
    • 2017-07-29
    • 2019-02-04
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多