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 相关文章推荐
一个用js实现控制台控件的代码
Sep 04 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
Mar 13 Javascript
javascript将数组插入到另一个数组中的代码
Jan 10 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
JavaScript实现自动变换表格边框颜色
May 08 Javascript
基于JS实现PHP的sprintf函数实例
Nov 14 Javascript
JavaScript制作简单的日历效果
Mar 10 Javascript
angularJs关于指令的一些冷门属性详解
Oct 24 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
Mar 30 Javascript
Angular6新特性之Angular Material
Dec 28 Javascript
JS面向对象之多选框实现
Jan 17 Javascript
JavaScript前端面试组合函数
Jun 21 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
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
vue观察模式浅析
2018/09/25 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
深入解析Python编程中super关键字的用法
2016/06/24 Python
Python中dict和set的用法讲解
2019/03/28 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
python判断自身是否正在运行的方法
2019/08/08 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
房地产销售经理岗位职责
2014/01/01 职场文书
信息工作经验交流材料
2014/05/28 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
教师三严三实心得体会
2014/10/11 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python
pandas进行数据输入和输出的方法详解
2022/03/23 Python
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers