Vue实现聊天功能, 类似jqeury的append功能

使用netty+Vue在写一个聊天室的例子的时候, 发现vue 好像没有类似jquery的append实现有先后顺序的插入dom节点的操作。于是查阅资料,发现可以使用v-for读一个数组,然后后台获取的信息再push到数组中,就可以实现类似于append的操作了。

前端样式代码:半块菠萝 侵删
在这里插入图片描述
使用v-if 或者 v-show 判断类型是别人的消息还是自己发出的消息, 两者只渲染一个

<div id="msgframe">
	<div class="pnl-list" id="msgs" v-for="msg in left">
		<div class="msg robot" v-if="msg.type ? false : true ">
	    	<div class="msg-left" :worker="msg.name">
	    		<div class="msg-host photo"></div>
	    		<div class="msg-ball" :title="msg.time"  v-cloak v-html="msg.content"></div>
			</div>
		</div>
		<div class="msg guest" v-if="msg.type ? true : false ">
			<div class="msg-right" >
	    		<div class="msg-host headDefault"></div>
	    		<div class="msg-ball" :title="msg.time" v-cloak v-html="msg.content"></div>
	    	</div>
	    </div>
	</div>
</div>
var chats = new Vue({
        el: '#msgframe',
        data: {
            content: '',
            msglist: []
        },
        methods: {
            // 点击按钮发送消息
            sendmsg() {
                if (this.content === '') {
                    return ;
                }
                let list1 = {
                    // 区分自己发的消息还是接收到的消息, true=自己发的消息
                    type: true,
                    time: new Date(),
                    name:  username,
                    content: this.content
                };
                // push到所有消息列表中
                chats.msglist.push(list1);
                // 发送消息
                CHAT.socket.send(list1);
                // 清空输入框中的内容
                this.content= '';
            }
        }
    });

接收到消息时同理, 只要把数据放在list中 push到msglist数组中, 类型设置为false, 就可以达到以上效果了。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值