javascript - 添加事件监听vuejs

标签 javascript vue.js vuejs2

你好,我正在使用 Vuejs。我正在循环中根据我的项目要求动态分配类名

:class="`card-${menu.name}`"

其中 menu.name 可以是 alpha、beta、zeta 等。

现在我想以不同的方式向每个类添加事件监听器,例如单击类卡-alpha 时执行 a1,单击类卡-beta 时执行 a2 等。请注意,我不能使用 @click="myfunc" 因为我希望在每个不同的类上执行不同的操作,所以它是其他的东西。你能帮我解决这个问题吗?非常感谢

这是我正在使用的代码,它不会工作,因为它只在安装代码时运行一次。那么如何在每次点击时触发这个函数呢?

mounted() {       
    document.querySelector('.card-alpha').addEventListener('click', () => { this.$state.val = 1; });       
    document.querySelector('.card-beta').addEventListener('click', () => { this.$state.val = 2; });     
},

最佳答案

您可以将值传递给函数,而无需安装 Hook 中的监听器:

const app = Vue.createApp({
  data() {
    return {
      items: [{id:1, name: 'alpha', val: 1}, {id:2, name: 'beta', val: 2}],
    };
  },
  methods: {
    myFunc(val) {
      // do other things
      // set your state with passed value
      //this.$state.val = val
      alert(val)
    }
  }
})
app.mount('#demo')
.card-beta {
  color: red;
}
.card-alpha {
  color: green;
}
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<div id="demo">
  <div v-for="menu in items" :key="menu.id">
    <button :class="`card-${menu.name}`" @click="myFunc(menu.val)">
      {{ menu.id }}
    </button>
  </div>
</div>

关于javascript - 添加事件监听vuejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73995280/

相关文章:

javascript - 我的 glob 怎么了?

javascript - ReactJs : How to prevent componentWillUpdate from re-rendering multiple times

javascript - HTML/JS : Calculating and displaying price

javascript - 如何将用户选择/输入分配给 JavaScript 变量?

css - 在 Vuetify 布局中调整流体容器

reactjs - 从客户端访问Elasticsearch而不通过API服务器是否安全?

javascript - 在 VueJS 项目中安装 slick carousel

javascript - 如何在 Vuex 商店创建后手动添加 getters/mutations?

javascript - Vue路由器: TypeError: Cannot read property '$createElement' of undefined

javascript - 无法访问vue2中子组件动态函数中的槽