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 相关文章推荐
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
Jun 04 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
Jan 23 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
May 08 Javascript
购物车选中得到价格实现示例
Jan 26 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
Sep 19 Javascript
javascript获取系统当前时间的方法
Nov 19 Javascript
javascript和jquery实现用户登录验证
May 04 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
JSONP原理及应用实例详解
Sep 13 Javascript
傻瓜式vuex语法糖kiss-vuex整理
Dec 21 Javascript
vue中node_modules中第三方模块的修改使用详解
May 31 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自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
重定向实现代码
2006/11/20 Javascript
javascript读写json示例
2014/04/11 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
javascript完美实现给定日期返回上月日期的方法
2017/06/15 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
python dict如何定义
2020/09/02 Python
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
班主任工作经验材料
2014/02/02 职场文书
房地产开发项目建议书
2014/05/16 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
大专生找工作自荐书
2014/06/10 职场文书
升职自荐信范文
2015/03/27 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技