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 相关文章推荐
Javascript里使用Dom操作Xml
Sep 20 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 Javascript
jquery单选框radio绑定click事件实现方法
Jan 14 Javascript
javascript数据类型验证方法
Dec 31 Javascript
浅谈Cookie的生命周期问题
Aug 02 Javascript
javascript设计模式之module(模块)模式
Aug 19 Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
Aug 02 Javascript
vue.js评论发布信息可插入QQ表情功能
Aug 08 Javascript
Vue-component全局注册实例
Sep 06 Javascript
jquery实现的分页显示功能示例
Aug 23 jQuery
vue+高德地图实现地图搜索及点击定位操作
Sep 09 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版(3)
2006/10/09 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
Python中List.count()方法的使用教程
2015/05/20 Python
python下MySQLdb用法实例分析
2015/06/08 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Sanic框架流式传输操作示例
2018/07/18 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
使用Python实现音频双通道分离
2020/12/25 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
师范生个人推荐信
2013/11/29 职场文书
土木工程专业个人求职信
2013/12/05 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
写给女朋友的保证书
2015/05/09 职场文书
运输公司工作总结
2015/08/11 职场文书
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
2021/07/01 Java/Android
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL