Vue实现PopupWindow组件详解


Posted in Javascript onApril 28, 2018

这段时间一直在学习前端技术来完成自己的小项目。在js方面就使用了Vue框架。由于在项目里想实现一个新建地址的PopupWindow效果,便想到可以使用Vue的一些特性来实现。

用到的Vue特性:组件(Component),props传值,slot内容插入,transitions过渡动画,x-templete模板。

直接上代码(完整代码可在链接中下载popupwindow):

html代码(无样式):

<div id="address-choose">
 <div>
 <button @click="showOneBtnWindow()">显示</button>
 </div>
 <new-address-window 
  v-show="isShowEditWindow" 
  @close="removeEditWindow()" 
  :addressregion="addressRegion">
  <!--使用插槽显示不同的title-->
  <p slot="edit-window-title">
  {{editTitle}}
  </p>
  <div slot="popup-btn-container">
  <button>保存</button> 
  <button>删除</button>
 </div>
 </new-address-window>
 </div>
<!--新建地址popupwindow模板-->
<script type="text/x-template" id="popup-window-address-new">
 <transition name="popup-window-transition">
 <div>
 <slot name="edit-window-title">
 <p>新建收货地址</p>
 </slot> 
 </div>
 <div>
 <p>收货人</p>
 <input type="text" :value="addressregion.name"/>
 </div>
 <div>
 <p>选择地区</p>
 <ul>
 <li>{{addressregion.province}}</li>
 <li>{{addressregion.city}}</li>
 <li>{{addressregion.region}}</li>
 </ul>
 </div>
 <div>
 <p>联系电话</p>
 <input type="text" placeholder="手机号"/>
 </div>
 <div>
 <p>详细地址</p>
 <input type="text" placeholder="如街道、楼层、门牌号等"/>
 </div>
 <div>
 <p>邮政编码</p>
 <input type="text" placeholder="邮政编码(选填)"/>
 </div>
 <div>
 <slot name="popup-btn-container">
 <button class="btn btn-success">保存</button>
 <button class="btn btn-danger">删除</button>
 </slot>
 </div>
 </div>
 </transition>
</script>

js代码:

/*
 * 新建与编辑地址Vue组件popupwindow
 * */
var newAddressWindow = Vue.component("new-address-window",{
 props: ['addressregion'],
 template: "#popup-window-address-new"
})

/*
 * 地址popupwindow的Vue实例
 * */
var chooseAddress = new Vue({
 el: "#address-choose",
 data: {
 isShowEditWindow: true,
 isOneButton: false,
 editTitle: "新建收货地址",
 //填入初始地址信息,组件与改数据绑定
 addressRegion: {
 }
 },
 methods: {
 showOneBtnWindow: function(){ //显示新建收货地址对话框(有一个按钮)
 this.isShowEditWindow = true;
 this.isOneButton = false;
 this.editTitle = "新建收货地址";
 },
 removeEditWindow: function(){ //关闭新建与编辑地址选择对话框
 this.isShowEditWindow = false;
 }
 }
})

至此,一个popupwindow的组件就完成了。在实现一个Vue组件时,可以使用模板来实现组件,我这里采用了x-templete模板实现了组件,同时在组件通也可以使用vue的transition特性加入一些动画效果。

Vue实现PopupWindow组件详解

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

Javascript 相关文章推荐
使用TextRange获取输入框中光标的位
Oct 14 Javascript
js textarea自动增高并隐藏滚动条
Dec 16 Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 Javascript
jQuery使用height()获取高度需要注意的地方
Dec 13 Javascript
举例简介AngularJS的内部语言环境
Jun 17 Javascript
js移动焦点到最后位置的简单方法
Nov 25 Javascript
js实现文字无缝向上滚动
Feb 16 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
webpack 模块热替换原理
Apr 09 Javascript
浅谈如何通过node.js对数据进行MD5加密
May 16 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 Javascript
JavaScript 反射学习技巧
Oct 16 Javascript
详解angular路由高亮之RouterLinkActive
Apr 28 #Javascript
vue弹窗组件使用方法
Apr 28 #Javascript
学习Vue组件实例
Apr 28 #Javascript
vue弹窗消息组件的使用方法
Sep 24 #Javascript
layui实现动态和静态分页
Apr 28 #Javascript
js实现二级菜单点击显示当前内容效果
Apr 28 #Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 #Javascript
You might like
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
php定时执行任务设置详解
2015/02/06 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
python查看zip包中文件及大小的方法
2015/07/09 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
Python 多线程的实例详解
2017/09/07 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
幼儿园教师考核制度
2014/02/01 职场文书
党课培训心得体会
2014/09/02 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
广告业务员岗位职责
2015/02/13 职场文书
高中生物教学反思
2016/02/20 职场文书
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
JS setTimeout与setInterval的区别
2022/04/20 Javascript