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 相关文章推荐
兼容ie、firefox的图片自动缩放的css跟js代码分享
Jan 21 Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 Javascript
动态加载js的方法汇总
Feb 13 Javascript
JS根据生日算年龄的方法
May 05 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
May 14 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
使用原生js封装的ajax实例(兼容jsonp)
Oct 12 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
Jan 16 Javascript
angularjs select 赋值 ng-options配置方法
Feb 28 Javascript
解决axios发送post请求返回400状态码的问题
Aug 11 Javascript
js实现幻灯片轮播图
Aug 14 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
Nov 03 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/08 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
python绘制直线的方法
2018/06/30 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
Python将字典转换为XML的方法
2020/08/01 Python
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
出纳工作检讨书
2014/10/18 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
预备党员自我评价范文
2015/03/04 职场文书
旅游项目合作意向书
2015/05/08 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
python 如何用terminal输入参数
2021/05/25 Python
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS