最近看到了一个眼镜在线试戴小项目使用纯js手写的,本人刚学习vue.js没多久,便试试用vue做做看了,还没完善。

其中包括初始图片加载,使用keywords查找,父子组件之间传递信息,子组件之间传递信息

1. 使用keywords查找

1.1 给每个li添加初始data

smallImg: [
  {
    keywords: "椭圆脸",
    src: "images/model_1.jpg",
    addClass: false
  },
  {
    keywords: "圆形脸",
    src: "images/model_2.jpg",
    addClass: false
  },

  ...

]

 1.2 添加方法

// 搜索脸型
addCurrent: function (index){
// li样式添加
this.faceType[index].isTrue=true;
this.faceType[this.oldIndex].isTrue=false;
this.oldIndex=index; // 搜索脸型
var type=this.faceType[index].type;
this.smallImg.forEach(function (val,index){
// 先都不加class
val.addClass=false;
// 若关键字不等于脸型则添加class
if(val.keywords!=type){
val.addClass=true;
}
});
// 点击全部,则所有的都不添加class
if(index==0){
this.smallImg.forEach(function (val,index){
// 先都不加class
val.addClass=false;
});
}
}

2. 子组件向父组件发送数据

  2.1 点击任意眼镜触发showGlass()事件

<script type="text/template" id="galsslist">
	<div class="galsslist">
<ul class="clearfix">
<li v-for="(val,index) in glass" @click="showGlass(index)" v-if="val.show">
<img :src="val.src" alt="">
<h4>{{ val.title }}</h4>
<p>{{ val.text }}</p>
</li>
</ul>
</div>
</script>

  2.2 子组件发射togg()事件到父组件,并传递点击的index值

showGlass: function (index){
    this.$emit("togg",index);
},

  2.3 父组件自定义事件

<!-- 自定义事件,子组件向父组件发送数据 -->
<galsslist @togg="showBig"></galsslist>

  2.4 执行showBig()事件,佩戴选择的眼镜

showBig: function (index){
this.bigGlassImg="images/glass_"+(index+1)+".png";
this.showbigGlassImg=true;
}

3. 子组件之间传递信息

3.1 先在index的data中定义  bus: new Vue(),

3.2 点击搜索在子组件触发search事件,发射事件 sear(), 并传递sendMsg信息

// 向另一个组件传递信息
search: function (){
var sendMsg=this.toggArr[0].msg;
this.$root.bus.$emit("sear",sendMsg);
}

 3.3 执行事件sear(),并修改this.searchKey,并触发searchKeywords()事件

// 接收另一组件传递的信息
created: function (){
var self=this;
this.$root.bus.$on("sear",function (val){
self.searchKey=val;
self.searchKeywords();
})
},
beforeDestory: function (){
this.$root.bus.$off("sear");
}

 3.4 显示与之匹配的眼镜

searchKeywords: function (){
this.glass.forEach(function (val,index){
// 先全部显示
val.show=true;
var key=val.title.split("_")[0];
// key不相等,则隐藏
if(key!=this.searchKey){
val.show=false;
}
},this);
// 为全部则全部显示
if(this.searchKey=="全部"){
this.glass.forEach(function (val,index){
// 全部显示
val.show=true;
});
}
}

4. github地址(https://github.com/hsiangleev/proj-eyeglass.git)

vue练手小项目--眼镜在线试戴的更多相关文章

  1. 初始Spring MVC——练手小项目

    初始Spring MVC 前几天开始了我的spring学习之旅,由于之前使用过MVC模式来做项目,所以我先下手的是 Spring MVC,做个练手项目,非常简单 项目介绍: 用户输入信息 -> ...

  2. Spring+Mybatis整合的练手小项目(一)项目部署

    声明:教程是网上找的,代码是自己敲的 项目目录大致如下: 1. 首先创建Maven工程,在pom.xml中加入项目所需依赖: <?xml version="1.0" enco ...

  3. 前端练手小项目——网页版qq音乐仿写

    qq音乐网页版仿写 一些步骤与注意事项 一开始肯定就是html+css布局和页面了,这段特别耗时间,耐心写完就好了 首先要说一下大致流程: 一定要先布局html!,所以一定要先分析页面布局情况,用不同 ...

  4. 一个vue练手的小项目

    编程路上的菜鸟一枚 : 最近接触了vue 然后写了一个练手的项目 使用vue-cli脚手架来搭建了的项目 技术: vue2  + vue-router  + ES6 + axios 框架有 mint- ...

  5. 【Python】【辅助程序】练手小程序:记录外网动态IP地址

    练手小程序 程序作用:对IP实时记录: 1.定时获取外网IP,存储在本地文件中: 编写思路: 1)收集获取外网的API接口       http://bbs.125.la/thread-1383897 ...

  6. 【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  7. 整理了适合新手的20个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...

  8. php小项目-web在线文件管理器

    php小项目-web在线文件管理器 一 项目结果相关视图 二 项目经验 通过简单的实现小项目,对php的文件相关操作更加熟悉,主要用于熟悉文件的相关操作 三 源代码下载地址 http://files. ...

  9. 简单的ssm练手联手项目

    简单的ssm练手联手项目 这是一个简单的ssm整合项目 实现了汽车的品牌,价格,车型的添加 ,修改,删除,所有数据从数据库中拿取 使用到了jsp+mysql+Mybatis+spring+spring ...

随机推荐

  1. node.js后台快速搭建在阿里云(一)(express篇)

    前期准备 阿里云服务器 node.js pm2 express nginx linux(推荐教程:鸟哥的私房菜) 简介 嗯……我只是个前端而已 前段时间写过一个.net mvc的远程发布,关于.net ...

  2. 针对通达OA20170729集团版设计门户管理解决方案的具体实例

    随着企业信息化建设的深入,应用系统数量不断增加,应用功能不断丰富,数据信息也在呈几何级数增长,在支撑企业正常工作运转的同时,也衍生出许多新的问题: 通达信科根据自身从业多年的行业实践经验,勇于打破传统 ...

  3. webpack常见的配置总结 ---只是一些常见的配置

    早期的构建工具grunt ,gulp 帮助我们配置一些开发环境,省去一些我们调试和重复的工作 现在我们的构建工具一般是webpack ,目前建议大家用3.0以上的版本 现在市场上比较优秀的构建工具,个 ...

  4. java面向对象(三)之抽象类,接口,向上转型

    java类 java类分为普通类和抽象类,接口,上一节我大概讲了java类的一般格式,今天将抽象类和接口.同时讲一下它们是怎样存储的. 最重要的是理解为什么要有抽象和接口,这样学下来你猜不会迷茫,才能 ...

  5. Tomcat session集群

    author:JevonWei 版权声明:原创作品 环境 tomcatA 172.16.253.108 tomcatB 172.16.253.105 代理服务器 172.16.253.191 Tomc ...

  6. Apache Camel之FTP组件学习

    写在最前面 哎,最近提了离职,手头的活也基本上清理的差不多了.想着这个把月可以舒服的晃悠晃悠的离开,但是运维的小伙伴总是不架势,走之前还是提了个新需求. 先说下需求吧,我们的系统概括的讲就是一个接口系 ...

  7. grunt之filerev、usemin

    窃以为这两个插件是比较有用的,filerev是给js.css进行编码重命名,usemin修改html中被重命名的js.css文件的引用.另外说明下之前将concat.cssmin.uglify放在一篇 ...

  8. IPsec_VPN实现技术【转载】

    GRE Tunnel GRE Tunnel(General Routing Encapsulation 通用路由封装)是一种非常简单的VPN(Virtual Private Network 虚拟专用网 ...

  9. 学会Git

    学会Git   目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1.4.3.分布式 ...

  10. 【集美大学1411_助教博客】团队作业10——项目复审与事后分析(Beta版本)

    写在前面的话 软件工程课结束了,大家开心吗?是不是再也不用熬夜写代码了?如果这门课你真的熬夜写代码了,相信你一定有收获,如果这门课结束了你觉得是自己一个全新的开始,那么这门课的意义就实现了.团队作业全 ...