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 相关文章推荐
延时重复执行函数 lLoopRun.js
May 08 Javascript
JavaScript面象对象设计
Apr 28 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
Apr 16 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
Sep 17 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
TypeScript入门-接口
Mar 30 Javascript
JS实现的Unicode编码转换操作示例
Apr 28 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
Jun 15 Javascript
微信小程序中button组件的边框设置的实例详解
Sep 27 Javascript
vue-content-loader内容加载器的使用方法
Aug 05 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 Javascript
js实现时分秒倒计时
Dec 03 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
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
php格式化日期实例分析
2014/11/12 PHP
深入php内核之php in array
2015/11/10 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
layui导航栏实现代码
2017/05/19 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
python实现员工管理系统
2018/01/11 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
Django设置Postgresql的操作
2020/05/14 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
Python 在局部变量域中执行代码
2020/08/07 Python
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
毕业生学校推荐信范文
2014/05/21 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
信息合作协议书
2014/10/09 职场文书
2016年寒假家长评语
2015/10/10 职场文书
《金色的草地》教学反思
2016/02/17 职场文书