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 相关文章推荐
共享自己写一个框架DreamScript
Jan 20 Javascript
jQuery1.5.1 animate方法源码阅读
Apr 05 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
Feb 19 Javascript
浅析node.js中close事件
Nov 26 Javascript
javascript 闭包详解
Jul 02 Javascript
微信小程序 教程之条件渲染
Oct 18 Javascript
webpack配置导致字体图标无法显示的解决方法
Mar 06 Javascript
vue项目上传Github预览的实现示例
Nov 06 Javascript
vue项目每30秒刷新1次接口的实现方法
Dec 04 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
Dec 13 Javascript
vue等两个接口都返回结果再执行下一步的实例
Sep 08 Javascript
利用H5api实现时钟的绘制(javascript)
Sep 13 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
php基础知识:函数基础知识
2006/12/13 PHP
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
javascript一点特殊用法
2008/05/28 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
使用Python抓取模板之家的CSS模板
2015/03/16 Python
优化Python代码使其加快作用域内的查找
2015/03/30 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
python操作kafka实践的示例代码
2019/06/19 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
学生宿舍管理制度
2014/01/30 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
小学语文复习计划
2015/01/19 职场文书
订货会邀请函
2015/01/31 职场文书