Vue.js实现模拟微信朋友圈开发demo


Posted in Javascript onApril 20, 2017

我用Vue.js实现微信朋友圈的一些功能,实现展示朋友圈,评论,点赞。

先构造一个vue的实例,对会更改的数据进行双向绑定,

我用JSON伪造模版数据,先实现显示朋友圈的效果,使用v-for方法去循环ALLFeeds中的每一项item生成包括name、content、time在内的各项数据。

微信朋友圈实现效果

Vue.js实现模拟微信朋友圈开发demo

HTML代码:

<div class="border" v-for="item in AllFeeds" track-by="$index">
      <div class="user-pic">
       <img v-bind:src="item.url" alt="">
      </div>
      <div class="user-content">
       <h2 class="spacing">{{item.name}}</h2>
       <p class="spacing">{{item.content}}</p>
       <img class="spacing" v-bind:src="item.picUrl" alt="">
       <span class="spacing time">{{item.time}}</span>
       <div class="commit" v-show="item.showComt">
        <a v-on:click="likeClick($event,item)" class="btn btn-left" href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
         <span class="icon-heart-empty"></span>{{item.like}}
        </a>
        <a v-on:click="comtClick($event,item)" href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="btn btn-comment">
         <span class="icon-comment-alt"></span>评论
        </a>
       </div>

实现朋友圈点赞

当like的值变为赞时,向userLike中push一个点赞的username,然后将like的值变为取消。当用户点击取消按钮的时候,将userLike数组中添加的赞pop掉。

likeClick: function (event, feed) {
     event.stopPropagation();
     if (feed.like === "赞") {
      if (gUserInfo) {
       feed.userLike.push(gUserInfo.username);
       feed.like = '取消';
      }
     } else {
      if (gUserInfo) {
       feed.userLike.pop();
       feed.like = '赞';
      }
     }
    }

实现评论功能

input的val()push到content的值里。

inputClick: function (event) {
     event.stopPropagation();
     var comText = $(".inset input").val();
     this.clickFeed.comment.push({"name": gUserInfo.username, "content": comText});
     $(".inset").addClass("hidden");
     $(".overplay").addClass("hidden");
     $('.inset input').val('');
    }

实现评论回复功能

给comment中添加reply的key。由于微信的回复是平铺的所以只要显示谁对谁的回复即可,不需要进行评论的嵌套。所以HTML中使用v-if对comment中是否存在reply进行判断。

replyClick:function(event){
     event.stopPropagation();
     var replyText = $(".replybox input").val();
     this.clickFeed.comment.push({
      "name":gUserInfo.username,
      "content":replyText,
      "reply":this.replyUser
     });
     $(".replybox").addClass("hidden");
     $(".overplay").addClass("hidden");
     $(".replybox input").val('');
    }

对comment中是否存在reply进行判断 

<div v-if="!(onecommet.reply)">
             <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" v-on:click="replyComt($event,item,onecommet)" class="reply">
              <span class="user">{{onecommet.name}}:</span>
              {{onecommet.content}}
             </a>
            </div>
            <div v-else>
             <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" v-on:click="replyComt($event,item,onecommet)" class="reply">
              <span class="user">{{userinfo.username}}</span>回复 <span class="user">{{replyUser}}:
              <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="reply">{{onecommet.content}}</a>
             </span>
             </a>
            </div>

遇到的坑:

当异步加载JSON的时候,不能直接获取到JSON的值,因为可能等下面函数加载完后JSON的值还未拿到。所以会出现data数据为undefined的情况。所以需要在JSON的回调函数中进行函数调用。

初始化showComt时,需要用到ready,当DOM加载完后再执行。

收获:

学会了使用v-for、v-if、v-show,v-on:click等vue的方法,vue的构造器,jQuery的Ajax相关的方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Raphael一个用于在网页中绘制矢量图形的Javascript库
Jan 08 Javascript
浅谈javascript六种数据类型以及特殊注意点
Dec 20 Javascript
JQuery中操作Css样式的方法
Feb 12 Javascript
Javascript中apply、call、bind的巧妙使用
Aug 18 Javascript
JavaScript中this的用法实例分析
Dec 19 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
Angular2+如何去除url中的#号详解
Dec 20 Javascript
基于vue循环列表时点击跳转页面的方法
Aug 31 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
js判断一个对象是数组(函数)的方法实例
Dec 19 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
Aug 06 Javascript
JavaScript Blob对象原理及用法详解
Oct 14 Javascript
AngularJS 单选框及多选框的双向动态绑定
Apr 20 #Javascript
Vue如何引入远程JS文件
Apr 20 #Javascript
AngularJS改变元素显示状态
Apr 20 #Javascript
bootstrap 设置checkbox部分选中效果
Apr 20 #Javascript
详解Vue2.0之去掉组件click事件的native修饰
Apr 20 #Javascript
AngularJS实现根据不同条件显示不同控件
Apr 20 #Javascript
详解Vuejs2.0之异步跨域请求
Apr 20 #Javascript
You might like
数据库中排序的对比及使用条件详解
2012/02/23 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
js表单验证实例讲解
2016/03/31 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
下载官网python并安装的步骤详解
2019/10/12 Python
python机器学习实现决策树
2019/11/11 Python
python爬虫用mongodb的理由
2020/07/28 Python
python 常见的反爬虫策略
2020/09/27 Python
python opencv肤色检测的实现示例
2020/12/21 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
保险公司早会主持词
2014/03/22 职场文书
防沙治沙典型材料
2014/05/07 职场文书
车间安全生产标语
2014/06/06 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
调解书格式范本
2015/05/20 职场文书
JS数组的常用方法整理
2021/03/31 Javascript