tnblog
首页
视频
资源
登录

vue实现好友选中效果

6120人阅读 2019/9/26 9:14 总访问:47150 评论:0 收藏:0 手机
分类: Vue


        逛过vue官网肯定会发现一个有趣的指令“v-for”,相比与以前拼接html代码确实要上档次一点,而且减少了工作量,先看一波效果图

        首先用以前的思路分析一波,每个联系人头像,昵称肯定是不同的,不管你用ajax还是什么,获取到你要的数据,一个数组,然后一个循环将我们需要的数据取出来,拼接好html,一个$("...").html(...)就完事了,简单的样式肯定还是比较好拼的,如果说很复杂的话那就会重复写很多遍,而且很容易写错,尤其是使用bootstrap,你会发现他的样式由很多div嵌套起来的,那就比较伤脑筋了。

那我们可以使用“v-for”来搞一波

  1. //页面...这里我就只放关键的代码
  2. <div id="app">
  3.     <ul class="clearfix J__addrFriendList">
  4.        <li v-for="item in friends">
  5.           <div class="row flexbox flex-alignc wc__material-cell">
  6.              <img class="uimg" :src="item .headImg" />
  7.              <span class="name flex1">{{item .name}}</span>
  8.           </div>
  9.        </li>
  10.     </ul>
  11. </div>
  12. <script>
  13.     var vm=new Vue({
  14.         el:"#app",//绑定对象,相当于作用范围
  15.         data:function(){
  16.             return{
  17.                 friends:[{
  18.                               id1,
  19.                               name"Aster",
  20.                               headImg"src/assets/img/uimg/u__chat-img09.jpg"
  21.                             },
  22.                             {
  23.                               id2,
  24.                               name"Bear",
  25.                               headImg"src/assets/img/uimg/u__chat-img10.jpg"
  26.                             },...]
  27.             }
  28.         }
  29.     })
  30. </script>

        语法什么的我就不过多介绍了,文档里写的很清楚

        这里初步的效果就有了,我们接下来分许一下,当我点击某个好友的时候,会有选中效果,首先想到的肯定是一个点击事件,然后添加样式而已,确实,并不难。用jQuery来做的话就是add Class之类的操作,但是会有些繁琐,我需要找到我点击的是哪一个好友,然后兄弟节点样式删除等操作,使用vue就会简单很多,上代码:

  1.     <ul class="clearfix J__addrFriendList">
  2.         //这里使用@@,因为在mvc中一个@代表后台代码
  3.        <li v-for="item in friends" @@click="routeSkip(item.id)">
  4.            //注意这里 unCTX on=>是选中的样式,vue支持两个class
  5.           <div class="row flexbox flex-alignc wc__material-cell" :class="selectionId==item.id?'unCTX on':''">
  6.              <img class="uimg" :src="item .headImg" />
  7.              <span class="name flex1">{{item .name}}</span>
  8.           </div>
  9.        </li>
  10.     </ul>
  11.     
  12. <script>
  13.     var vm=new Vue({
  14.         el:"#app",//绑定对象,相当于作用范围
  15.         data:function(){
  16.                 return{
  17.                     friends:[{
  18.                                   id1,
  19.                                   name"Aster",
  20.                                   headImg"src/assets/img/uimg/u__chat-img09.jpg"
  21.                                 },
  22.                                 {
  23.                                   id2,
  24.                                   name"Bear",
  25.                                   headImg"src/assets/img/uimg/u__chat-img10.jpg"
  26.                                 },...],
  27.                             selectionId:undefined
  28.                 }
  29.         },
  30.         methods:{
  31.             routeSkip(id){
  32.                 this.selectionId=id;
  33.                 //...根据好友Id进行其他操作
  34.             }
  35.         }
  36.     })
  37. </script>

        这里选中效果就有了,是不是很简单,至于为什么要用好友Id,这是因为后面还有其他操作,用自带的index的话满足不了我的需求,这里随便说一下怎么使用index,

        在v-for的循环中其实还可以写成这样v-for="(item,index) in friends",item代表这个对象,index代表下标,我们可以使用下标来添加选中样式,就不需要定义selectionId了,当点击的时候比如做什么跳转啊之类的就可以在routeSkip方法中操作了


        学习很重要,尤其是现在是大前端时代,不说精通,但是能看懂一下也还是很有必要的,文档是个好东西,善于利用文档。

写的比较糙,有不懂的在下方留言,尽我所能为你解答





评价

vue.js+Layer实现表格数据绑定与更新

一:使用Vue.js绑定好数据与更新事件 使用v-on绑定好事件,在事件里边直接把该行数据传递进去,在更新方法里边就可以直接...

vue.js 实现省市联动

HTML代码&lt;divid=&quot;pro_citys&quot;&gt; 省:&lt;selectid=&quot;provice&quot;v-on:change=&quot;prochange()&quo...

vue.js常见问题

一:花括号当做字符串显示的问题1:检查下绑定到vue.js的id是否重复,如果id重复了,就有可能存在这种问题,因为有可能把数...

vue.js常用指令

v-html可以把字符串当成一个html来渲染,而不是原样输出Html类似.net mvc中的@Html.Raw()方法&lt;divv-html=&quot;item.tit...

干货!div滚动到一定位置就固定他。vue中实现一侧滚动到底部就固定

尊重原创:转载请注名出处div滚动到一定位置就固定他,例如左边的内容很多,右边的内容很少,如果不处理滚动到一定位置后右...

vue.js常用指令,事件绑定等,vue过滤器解析状态过滤器多个参数。vue表格状态解析。vue解析类型,element ui解析类型,状态,el-tag

按照html的编码显示:v-html&lt;div class=&quot;font_info&quot; v-html=&quot;item.Content&quot;&gt;{{item.Content}}&l...

vue.js if用法

vue.js if可以做一些判断例如我们要把下面这个输出varvm=newVue({ el:&quot;#content&quot;, data:{ titles:[&quot;小明...

vue.js 学习日记第一章-安装vue开发环境

官网:https://cn.vuejs.org/v2/guide/ 这是一篇学习性文章,不定时更新,用来记录我学习vue.js的过程。 首先,是v...

vue.js 学习日记第二章-在vue中编写function及一些简单指令

官网:https://cn.vuejs.org/v2/guide/ vue.js 学习日记第一章:http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第三章-vue中的简单事件及事件修饰符

官网:https://cn.vuejs.org/v2/guide/ vue.js 学习日记第二章:http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第四章-vue中文本框数据获取与绑定及computed计算属性

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第三章: http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第五章-v-if和v-for指令的使用方式

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第四章: http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第六章-vue组件初步学习

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第五章: http://www.tnblog.net/18323015640/article/details/2...

vue.js学习日记第七章-搭建脚手架

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第六章: http://www.tnblog.net/18323015640/article/details/2...

js时间格式化vue.js时间格式化,带T 时间格式化

也可以借助moment库, 参考:https://www.tnblog.net/aojiancc2/article/details/8079moment库有点大,推荐可以使用day.js...
世上本无事,庸人自扰之
排名
48
文章
6
粉丝
4
评论
5
vue脚手架搭建
庸人 : eslint不建议我们这样的新手安装,会严&#26684;要求测试等等
vue脚手架搭建
剑轩 : 加油加油,前后端通吃的全才
vue+element之表单验证
剑轩 : 这个还是比较方便,最近也有遇到这类问题
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
不气盛能叫年轻人吗?