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 相关文章推荐
javascript动态添加样式(行内式/嵌入式/外链式等规则)
Jun 24 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
Jan 02 Javascript
javascript实例分享---具有立体效果的图片特效
Jun 08 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
Nov 20 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
Oct 15 Javascript
jQuery给元素添加样式的方法详解
Dec 30 Javascript
详解Jquery Easyui的验证扩展
Jan 09 Javascript
angular实现IM聊天图片发送实例
May 08 Javascript
基于vue实现一个禅道主页拖拽效果
May 27 Javascript
node.js中 redis 的安装和基本操作示例
Feb 10 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 set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Python实现简单字典树的方法
2016/04/29 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
自学python的建议和周期预算
2019/01/30 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
高中运动会广播稿
2014/01/21 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
活动总结范文
2014/08/30 职场文书
工作收入住址证明
2014/10/28 职场文书
安徽导游词
2015/02/12 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python