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 相关文章推荐
Mootools 1.2教程 输入过滤第一部分(数字)
Sep 15 Javascript
JS 表单验证大全
Nov 23 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
Mar 01 Javascript
通过url查找a元素应用案例
Apr 29 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
Jul 20 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
Aug 06 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 Javascript
老生常谈javascript的面向对象思想
Aug 22 Javascript
layDate插件设置开始和结束时间
Nov 15 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
Nov 05 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下打开URL地址的几种方法小结
2010/05/16 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
对Python中range()函数和list的比较
2018/04/19 Python
简单了解python的break、continue、pass
2019/07/08 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
英国袜子店:Sock Shop
2017/01/11 全球购物
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
大学毕业感言50字
2014/02/07 职场文书
职工趣味运动会方案
2014/02/10 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
刘公岛导游词
2015/02/05 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android