根据条件在 v-for 的每个元素上切换 2 类

Toggle 2 classes on each element of v-for based on conditions

我正在尝试使用 vue 2 列出 2 个用户之间的聊天列表。 按照我的风格,我有 2 类 'left' 和 'right' 帮助显示聊天是属于第一个还是最后一个用户。

这是我的循环

 <div class="row chats-container">
    <div class="row chat-message clearfix" 
        v-for="chat in chats">
        <img src="./../../assets/userDefault.png" alt="">
        <span>{{chat.chat}}</span>
    </div>
 </div>

这是我要使用的条件:'v-if="auth.id === chat.sender.id"'

我想在两个 类 之间切换:leftright

需要一些帮助...

您可以在 class 属性上使用 属性 绑定,例如 :class,然后您可以使用 vue-component 的属性和方法。

<div class="row chats-container">
   <div 
       v-for="chat in chats"
       :class='{"row": true, "chat-message": true, "clearfix": true, "left": auth.id !== chat.sender.id, "right": auth.id === chat.sender.id}'
   >
     <img src="./../../assets/userDefault.png" alt="">
     <span>{{chat.chat}}</span>
   </div>
</div>

如果那篇文章的长度让你很烦(我很烦),你可以设置一个方法:

methods: {
  textMessageStyle (chat) {
    return {
      "row": true,
      "chat-message": true, 
      "clearfix": true,
      "left": auth.id !== chat.sender.id, 
      "right": auth.id === chat.sender.id
    }
  }
}

然后:

<div class="row chats-container">
   <div 
       v-for="chat in chats"
       :class="textMessageStyle(chat)" 
   >
     <img src="./../../assets/userDefault.png" alt="">
     <span>{{chat.chat}}</span>
   </div>
</div>