Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)


Posted in Javascript onDecember 11, 2019

1、前阶段做了这个地址管理页面,实现的过程中遇到了很多的问题,好在最后实现了,在此记录一下:

Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)

首先是加载页面阶段ajax从数据库中获取数据,然后动态的显示在页面中,随后可以点击单个的编辑或删除进行相关操作,可以单击默认地址按钮进行样式切换,默认地址可以没有(单击选中和取消),但是如果设置默认地址则只能设置一个,好,下面我们来一步一步的实现。

2、我这里使用的是Vue.js,页面加载阶段很简单,直接在mounted声明一个方法,然后在方法中调用ajax请求访问数据然后通过v-for循环将数据放入到html元素中即可,这个就不多说了,直接看代码就行了,这篇文章主要是记录一下如何实现点击选中和取消radio,并实现点击过程中样式的切换。

var vm = new Vue({
 el:"#",
 data:{
 sites:[]
 },
 mounted:function() {
 this.showData();
 },
 methods:{
 showData:function(){
 jQuery.ajax({
 url:"这里写你的访问路径",
 data:"",
 type:"GET",
 dataType:"json",
 success:function(res){
 if(res.code==0){
 for(var i=0;i<res.data.addresses.length;i++){
 //将获取到的数据赋值到data中的site[]
 vm.sites.push(res.data.addresses[i]);
 }
 }else{
 alert("加载失败");
 }
 }
 })
 }
 }
})

3、首先实现radio的点击选中和取消,可以看下我单独整理的这篇文章:jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证,由于我这里用到的是Vue.js,那么看下我页面的实现代码:

<input type="radio" :id="site.addressid" name="defaultAddress" class="address_manager_content-d3-left-img" data-waschecked="true" v-if="site.isdefault=='1'" checked="checked" @click="editIsDefault(site, $event)"/>
<input type="radio" :id="site.addressid" name="defaultAddress" class="address_manager_content-d3-left-img" data-waschecked="false" v-else @click="editIsDefault(site, $event)" />

将获取到的addressid通过:id赋值到每个元素,实现每个元素对应它自己的id,为元素添加data-* 属性(点击了解data-*属性),方便获取到checked的信息,然后为每个radio添加class方便我们设置点击以后的图片切换,根据v-if判断该条地址信息是否为默认地址,在元素上添加了点击事件并传入site(每条地址的相关信息),和该地址信息dom对象。

下面是修改默认地址的方法:实现了点击选中和取消,并且点击切换后立即向服务器提交数据实现实时的数据更新。

editIsDefault:function(site,event){
 if($(event.currentTarget).data("waschecked")==true){
 $(event.currentTarget).prop("checked",false);
 $("input:radio[name='defaultAddress']").data('waschecked',false);
 $(event.currentTarget).data("waschecked",false);
 }else{
 $(event.currentTarget).prop("checked",true);
 $("input:radio[name='defaultAddress']").data('waschecked',false);
 $(event.currentTarget).data("waschecked",true);
 }
 var isDefault;
 if($(event.currentTarget).prop("checked")){
 isDefault = "1";
 }else{
 isDefault = "0";
 }
 jQuery.ajax({
 url:"这里写你自己的url",
 data:{
 addressid: site.addressid,
 name: site.name,
 phone: site.phone,
 area: site.area,
 address: site.address,
 isdefault: isDefault 
 },
 type:"GET",
 dataType:"json",
 success:function(res){
 if(res.code=="0"){
 }
 },
 error:function(){
 alert("修改默认地址失败,请刷新后重试");
 }
 })
}

4、使用CSS样式来实现radio点击选中和取消过程中图片样式的切换,我整理了另一篇文章,有兴趣的可以看一下:点击radio实现两个图片间的样式切换

我这里直接将我的代码贴一下供参考:

.address_manager_content-d3-left-img{
 /* 隐藏原有样式 */
 appearance: none;
 -webkit-appearance: none;
 outline: none;
 /* 增加新样式:未选中时 */
 display: inline-block;
 width: 20px;
 height: 20px;
 position: static;
 margin : 15px 5px 0 0!important;
 background: url(未选中时图片的url) no-repeat;
 background-size: cover;
}
.address_manager_content-d3-left-img:checked{/* 选中时 */
 background: url(选中时的图片url) no-repeat;
 background-size: cover;
}

5、实现点击以后编辑地址:(删除的话思路一样)

这个非常简单,因为每一个地址信息我们都是通过v-for循环得来的,那么我们点击修改的时候将我们获取的数组中的site传入到方法中即可,然后访问页面的时候将该条地址信息的id传过去即可,到编辑地址页面可以通过id去后台查到该条地址信息并进行地址回填就可以实现了。

<span @click="editAddress(site)">编辑</span>

editAddress:function(site){
 window.location.href="你的跳转路径(编辑地址信息的页面)?addressid=" rel="external nofollow" +site.addressid;
}

总结

以上所述是小编给大家介绍的Vue.js 实现地址管理页面(地址添加、编辑、删除和设置默认地址),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
前端开发必须知道的JS之原型和继承
Jul 06 Javascript
JQuery触发radio或checkbox的change事件
Dec 18 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
Jun 23 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
微信小程序 闭包写法详细介绍
Dec 14 Javascript
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
JavaScript学习笔记之DOM基础操作实例小结
Jan 09 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
Sep 24 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 Javascript
js实现无刷新监听URL的变化示例代码详解
Jun 03 Javascript
用JS实现一个简单的打砖块游戏
Dec 11 #Javascript
js消除图片小游戏代码
Dec 11 #Javascript
详解vue中$nextTick和$forceUpdate的用法
Dec 11 #Javascript
基于jQuery实现可编辑的表格
Dec 11 #jQuery
jQuery实现可编辑的表格
Dec 11 #jQuery
vue element自定义表单验证请求后端接口验证
Dec 11 #Javascript
详解如何在JS代码中消灭for循环
Dec 11 #Javascript
You might like
生成卡号php代码
2008/04/09 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
在Python中使用异步Socket编程性能测试
2014/06/25 Python
Python进程池Pool应用实例分析
2019/11/27 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
金融事务专业求职信
2014/04/25 职场文书
新员工入职欢迎词
2015/01/23 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python