Vue header组件开发详解


Posted in Javascript onJanuary 26, 2018

一、 header 组件开发 之数据的传递

1. App.vue 引入组件

import header from './components/header/header'

2. App.vue 中注册组件

export default {
   components:{
     v-header:header
   }
 }

3. 使用组件

<v-header :sell="sellerObj"></v-header>

解释::sell="sellerObj",这里就像一个函数传参一样把sell当成形参,sellerObj就是实参,那么父组件实参是怎么传给子组件的,通过什么传

4. 父组件向子组件传递数据

在父组件中需要将sellerObj作为数据导出,子组件通过props从父组件中获得数据,且要指定数据类型

export default {
 props:{ // 子组件获取 父组件 数据
 sell:{
  type:Object // 传递的类型 
 }
 }
 }

小结:

  1. 子组件在props中创建一个属性,用以接收父组件传过来的值
  2. 父组件中注册子组件
  3. 在子组件标签中添加子组件props中创建的属性
  4. 把需要传给子组件的值赋给该属性

5. 调用数据

<div class="logo">
 <img :src="sell.avatar" alt="" width='64' height='64'/>
</div>
<span class="name">{{sell.name}}</span>
<div class="description">
  {{sell.description + '/' + sell.deliveryTime + '分钟送达'}}
</div>

细节问题:

support 绑定数据时 加 v-if ='sell.supports'

理由 : 在我们通过axios获取数据前在父组件中创建了一个空的对象sellerObj 先传给子组件,开始 没有数据传送过去就会报错 underfined,加上 v-if ,接受不到数据就不会解析,也就不会报错。

二、 header 组件弹出层(详情)

1.弹出遮罩层

(1) 设置一个状态,判断该状态控制显示隐藏

data (){
 return {
 detailShow:false
 }
}
<div v-if="detailShow" class="detail"></div>

(2) 绑定点击事件,通过methods 方法改变 状态,控制显隐效果

<div class="bulletin-wrapper" @click="showDetails()" ></div>
<div class="detail-close" v-if="sell.supports">
  <i class="icon-close" @click="hideDetail()"></i>
</div>
methods:{
 showDetails () {
  this.detailShow=true
 },
 hideDetail () {
 this.detailShow=false
 }
}

2. 星级评分

(1) 绑定class 控制星级大小的类型

// 利用 computed 属性
<div class="star" :class="starSizeType"></div>

computed: {
 starSizeType() { // 返回 星级的大小类型 48/36/24
  return 'star-' + this.size;
 }
}

(2) 遍历星星的数量

<span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span>

(3) 定义常量 控制 每个星的状态

// 类名用变量存起来
const LENGTH = 5 // 星星长度
const CLS_ON = 'on' // 全星
const CLS_HALF = 'half' // 半星
const CLS_OFF = 'off'// 空星

(4) 通过计算 判断每个span 的类型

itemClasses () { // 返回一个数组为每个span 的类名 (遍历)
  let spanClassList=[];
  // 利用 实参评分来判断 有几颗全星,半星,空星
 let scores=( Math.floor(this.score * 2) ) / 2 
 let intNum= Math.floor(scores); // 全星个数 
 let HashalfNum= scores % 1 !== 0  // 半星
 for(var i=0;i<intNum;i++){ // 遍历全星的span
 spanClassList.push(CLS_ON)
 }
 if(HashalfNum){ // 如果有半星 加类名
 spanClassList.push(CLS_HALF)
 }
 while(spanClassList.length<LENGTH){// 判断 是否有空星 及个数
 spanClassList.push(CLS_OFF)
 }
  return spanClassList;   
 }
}

(5) 通过 动态绑定class 来 给span 加类名

<div class="star" :class="starSizeType">
 <span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span>
</div>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
json简单介绍
Jun 10 Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
Feb 06 Javascript
用js实现in_array的方法
Nov 05 Javascript
点击显示指定元素隐藏其他同辈元素的方法
Feb 19 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
Sep 14 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
Jan 28 Javascript
vue中axios实现数据交互与跨域问题
May 12 Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
Sep 06 Javascript
Vue shopCart 组件开发详解
Jan 26 #Javascript
jquery写出PC端轮播图实例
Jan 26 #jQuery
深入理解vue中slot与slot-scope的具体使用
Jan 26 #Javascript
从零开始最小实现react服务器渲染详解
Jan 26 #Javascript
微信小程序模版渲染详解
Jan 26 #Javascript
微信小程序如何获取用户信息
Jan 26 #Javascript
vue实现前进刷新后退不刷新效果
Jan 26 #Javascript
You might like
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
显示、隐藏密码
2006/07/01 Javascript
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
vue.js的简单自动求和计算实例
2019/11/08 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
在vscode中配置python环境过程解析
2019/09/28 Python
Python定义一个函数的方法
2020/06/15 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
草莓网官网:StrawberryNET
2019/08/21 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
黄继光的英雄事迹材料
2014/02/13 职场文书
中医学专业自荐信范文
2014/04/01 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
保护母亲河倡议书
2014/04/14 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
目标责任书格式
2014/07/28 职场文书
护士医德医风自我评价
2014/09/15 职场文书
2014年教务工作总结
2014/12/03 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
2015年财务部工作总结
2015/04/10 职场文书
感恩父母主题班会
2015/08/12 职场文书
党员公开承诺书2016
2016/03/24 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript