当前位置: 首页 > news >正文

Vue(二)header组件开发

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、 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 // 传递的类型 
 	}
  }
 }

小结:

  • 子组件在props中创建一个属性,用以接收父组件传过来的值

  • 父组件中注册子组件

  • 在子组件标签中添加子组件props中创建的属性

  • 把需要传给子组件的值赋给该属性

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>

后续更新...

转载于:https://my.oschina.net/u/3662721/blog/1610170

相关文章:

  • Yii性能调整
  • predict_proba 的使用
  • shell环境变量以及set,env,export的区别
  • 【PHP】富文本HTML过滤器:HTMLPurifier使用教程(防止XSS)
  • 让 webpack 加载 Source Map
  • 常见Oracle HINT的用法
  • vSphere虚拟化之外部存储部署(上)
  • C#枚举-避免不合理赋值
  • python3基础2--变量-字符编码-缩进-注释-用户输入-模块初识
  • 【强烈推荐】Kindle3下使用的提供加密功能的记事本,可以输入中文 -- KindleNote...
  • PTGAN:针对行人重识别的生成对抗网络 | PaperDaily #36
  • SqlParameter的作用与用法
  • vue官方推荐的环境
  • managedwifi.codeplex.com
  • 微信小程序之 Swiper(轮播图)
  • JavaScript-如何实现克隆(clone)函数
  • EOS是什么
  • JS 面试题总结
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • PHP 的 SAPI 是个什么东西
  • SSH 免密登录
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 安卓应用性能调试和优化经验分享
  • 初探 Vue 生命周期和钩子函数
  • 大快搜索数据爬虫技术实例安装教学篇
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 微服务核心架构梳理
  • Spring第一个helloWorld
  • (06)金属布线——为半导体注入生命的连接
  • (pytorch进阶之路)扩散概率模型
  • (四)JPA - JQPL 实现增删改查
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net Core和.Net Standard直观理解
  • .net framework profiles /.net framework 配置
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 读取 JSON格式的数据
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .Net中间语言BeforeFieldInit
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • :=
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [20170728]oracle保留字.txt
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [C# 网络编程系列]专题六:UDP编程
  • [C]整形提升(转载)
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]
  • [Firefly-Linux] RK3568修改控制台DEBUG为普通串口UART
  • [HOW TO]如何在iPhone应用程序中发送邮件
  • [iOS]中字体样式设置 API