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 相关文章推荐
中文路径导致unitpngfix.js不正常的解决方法
Jun 26 Javascript
javascript实现的一个随机点名功能
Aug 26 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
Jquery遍历Json数据的方法
Apr 20 Javascript
javascript中caller和callee详解
Aug 10 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
Mar 13 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 Javascript
详解用vue.js和laravel实现微信授权登陆
Jun 23 Javascript
bootstrap table表格客户端分页实例
Aug 07 Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 Javascript
详解关于React-Router4.0跳转不置顶解决方案
May 10 Javascript
基于Node.js搭建hexo博客过程详解
Jun 25 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
配置支持SSI
2006/11/25 PHP
php实现点击可刷新验证码
2015/11/07 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中的面向对象编程详解(下)
2015/04/13 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
Django 再谈一谈json序列化
2020/03/16 Python
python实现学生成绩测评系统
2020/06/22 Python
python实现简单的tcp 文件下载
2020/09/16 Python
pandas实现导出数据的四种方式
2020/12/13 Python
图书室标语
2014/06/21 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
中秋节慰问信
2015/02/15 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
Python+Tkinter制作专属图形化界面
2022/04/01 Python