Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使用array.push()之后,如何为数组中的每个元素应用自定义类?_Javascript_Html_Css_Vue.js - Fatal编程技术网

Javascript 在使用array.push()之后,如何为数组中的每个元素应用自定义类?

Javascript 在使用array.push()之后,如何为数组中的每个元素应用自定义类?,javascript,html,css,vue.js,Javascript,Html,Css,Vue.js,我正在尝试使用Vue.js编写一个消息UI,很像WhatsApp界面。每条消息都是数组中的一个元素,我的计划是对每条消息应用自定义类,以便通过检查用户名将消息向左或向右对齐。通过使用.push()将消息添加到原始数组来发送消息 我的代码如下: <div class="conversation" v-chat-scroll="{always: false, smooth: true}"> <div v-for="message in conver

我正在尝试使用Vue.js编写一个消息UI,很像WhatsApp界面。每条消息都是数组中的一个元素,我的计划是对每条消息应用自定义类,以便通过检查用户名将消息向左或向右对齐。通过使用.push()将消息添加到原始数组来发送消息

我的代码如下:

        <div class="conversation" v-chat-scroll="{always: false, smooth: true}">

        <div v-for="message in conversationResources" :key="message.id" :class="{
            'my-message': conversationResources[conversationResources.length - 1].name == 'my name',
            'your-message': conversationResources[conversationResources.length - 1].name !== 'my name'
        }">

            <span class="message-info">{{ message.name }}: </span>
            <span>{{ message.content }}</span>
            <span class="timestamp">{{ message.timestamp }}</span>

        </div>
    </div>
发送消息:

sendMessage: function(inputMessage) {
            // Send message
            this.conversationResources.push({
                name: 'my name',
                content: inputMessage, 
                timestamp: moment.utc().format('LTS')
            })
            this.inputMessage = ''

结果是,每次我单击send(触发push())时,以前的所有messages类都被更新为“my message”类,并对齐到错误的一侧。因此,我需要在触发push()时保持前面消息的类不变。你知道怎么做吗?

因为这个-1: “我的消息”:conversationResources[conversationResources.length-1]

您的聊天室应该对齐左侧的所有文本,并且只为一个用户提供类。 所以把所有的都向左对齐

创建if类(例如:获取哪个用户登录到您的选项卡中,等于用户已发布消息-如果此用户为===已登录用户,则添加类以向右对齐)。 此处仅需要一个类:)


这肯定会起作用:)

因为-1: “我的消息”:conversationResources[conversationResources.length-1]

您的聊天室应该对齐左侧的所有文本,并且只为一个用户提供类。 所以把所有的都向左对齐

创建if类(例如:获取哪个用户登录到您的选项卡中,等于用户已发布消息-如果此用户为===已登录用户,则添加类以向右对齐)。 此处仅需要一个类:)

这肯定有用:)

试试这个

<div v-for="message in conversationResources" :key="message.id" :class="{
                                                                      'my-message': message.name == 'my name',
                                                                      'your-message': message.name !== 'my name'
                                                                      }">

<span class="message-info">{{ message.name }}: </span>
<span>{{ message.content }}</span>
<span class="timestamp">{{ message.timestamp }}</span>

{{message.name}}:
{{message.content}
{{message.timestamp}
试试这个

<div v-for="message in conversationResources" :key="message.id" :class="{
                                                                      'my-message': message.name == 'my name',
                                                                      'your-message': message.name !== 'my name'
                                                                      }">

<span class="message-info">{{ message.name }}: </span>
<span>{{ message.content }}</span>
<span class="timestamp">{{ message.timestamp }}</span>

{{message.name}}:
{{message.content}
{{message.timestamp}
像这样的事

newvue({
el:“#应用程序”,
数据(){
返回{
输入消息:“”,
对话资源:[
{name:'my name',content:'Hello',时间戳:1},
{name:'your name',content:'Hi',时间戳:2},
{name:'你的名字',content:'你好吗?',时间戳:3}
]
}
},
方法:{
getMessageClass(消息){
return message.name==‘我的名字’?‘我的消息’:‘你的消息’
},
发送消息(输入消息){
//发送消息
这是.conversationResources.push({
姓名:'我的名字',
内容:inputMessage,
时间戳:4
})
this.inputMessage=“”
}
}
})
。我的留言{
文本对齐:右对齐;
背景颜色:蓝色;
}
.你的留言{
文本对齐:左对齐;
}

{{message.name}}:
{{message.content}
{{message.timestamp}
邮寄
像这样的东西

newvue({
el:“#应用程序”,
数据(){
返回{
输入消息:“”,
对话资源:[
{name:'my name',content:'Hello',时间戳:1},
{name:'your name',content:'Hi',时间戳:2},
{name:'你的名字',content:'你好吗?',时间戳:3}
]
}
},
方法:{
getMessageClass(消息){
return message.name==‘我的名字’?‘我的消息’:‘你的消息’
},
发送消息(输入消息){
//发送消息
这是.conversationResources.push({
姓名:'我的名字',
内容:inputMessage,
时间戳:4
})
this.inputMessage=“”
}
}
})
。我的留言{
文本对齐:右对齐;
背景颜色:蓝色;
}
.你的留言{
文本对齐:左对齐;
}

{{message.name}}:
{{message.content}
{{message.timestamp}
邮寄

非常感谢大家这么快发表评论!我试过囚犯Raju和Shirtle的答案,对他们都很有效!愚蠢的我,我会确保我不会包括整个数组时,我再次申请类。大家干杯!非常感谢大家评论这么快!我试过囚犯Raju和Shirtle的答案,对他们都很有效!愚蠢的我,我会确保我不会包括整个数组时,我再次申请类。大家干杯!