vue.js - 如何在 Vue 中通过计算动态添加的组件上切换类?

标签 vue.js vuex

假设您有一个模板:

<div v-for="item in items" :key="item.id">
  <p @click="toggle(item, $event)"> {{ item.name }} </p>
</div>

此模板中的项目来自计算属性:

computed: { ...mapGetters(['items']) }

我想在单击 <p> 时切换类(class)项目(当然不是它的兄弟项目)。有没有简单的方法可以做到这一点?

有没有一种简单的方法可以为该个人添加属性item在计算属性中,然后执行 :class="item.prop ? 'myclass' : ''" ?最好不必为此进行调度...

您是否可以使用 $event.target 来点击该元素? ,如果是这样,您将如何切换类(class)?

最佳答案

Something like this, perhaps?

HTML:

<div id="app">
  <div v-for="item in items" :key="item.id">
    <p @click="toggle($event)"> {{ item.name }}</p>
  </div>
</div>

CSS:

.my-class {
  background-color: yellow;
}

JS:

new Vue({
  el: '#app',
  data: {
    items: [{ name: "Item1", id: "1" }, { name: "Item2", id: "2" }, { name: "Item3", id: "3" }]
  },
    methods: {
    toggle($event){
        let s = $event.target.classList;
      s.contains("my-class") ? s.remove("my-class") : s.add("my-class");
    }
  }
})

关于vue.js - 如何在 Vue 中通过计算动态添加的组件上切换类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55107245/

相关文章:

unit-testing - Vue.js Vuetify,使用 Jest 运行我的第一个单元测试时出现问题

html - 为什么在 url 正确的情况下找不到我的 svg 图像?

vue.js - 没有页面刷新 Nuxt/Buefy 不加载 CSS

javascript - 如何阻止模态直到 api 请求得到解决

javascript - Vue 警告 : Error in created hook: "TypeError: Cannot read property ' get' of undefined"

JavaScript/VueJS : Check if an Array contains an object with an element that has specific value

javascript - Vuex和mysql连接对象: Do not mutate vuex store state outside mutation handlers

vue.js - 一旦我将 "props"添加到组件中,我就会得到 : Error in callback for watcher "function () { return this._data.$$state }"

javascript - Bootstrap-Vue:将角色权限实现为多个 b-form-checkbox 数组,显示为 b-table 中的列。不工作

vue.js - 当 vuex store 中的特定状态发生变化时发出事件