当前位置: 移动技术网 > IT编程>脚本编程>vue.js > 详解vantUI框架在vue项目中的应用踩坑

详解vantUI框架在vue项目中的应用踩坑

2019年01月07日  | 移动技术网IT编程  | 我要评论

安徽卫视直播在线观看,新泽西护栏,释来果

1.订单提交地址等组件的应用。

使用的组件有如下:

import {card,button,toast,addresslist,popup,addressedit,area} from 'vant'

主要是配货地址编辑这块;

 <van-address-edit
           :area-list="arealist"
           :address-info="addressinfo"
           show-postal
           show-delete
           show-set-default
           show-search-result
           
           @save="onsave"
           @delete="ondelete"
           @change-detail="onchangedetail"
          />

地址编辑。没有用默认的地址编辑属性:search-result

search-result 详细地址搜索结果

所以去掉了,一是没有做地理搜索功能。而且发现模拟测试老是有bug,干脆去掉。

2.默认list属性。要重新定义。配合自己需要做的功能。文档给的属性很少

list:[
    { id: '1',
     name: '张三',
     tel: '13000000000',
     province:'江苏',
     city:'无锡',
     county:'崇安区',
     area_code:'120000',
     address: '浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室',
     postal_code:'123456',
    }
   ],

原来的

{
     id: '1',
     name: '张三',
     tel: '13000000000',
     address: '浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室'
    },

,后添加详细的数据,是为了方便后期做更改编辑功能。

3.地址json文件。

默认要导入全国地址表,

// 导入 area.js
import arealist from '../../../config/area.min.js'

直接在函数。将数据绑定给了模型 arealist

 :area-list="arealist"

4.保存地址:

默认数据类型对象。所以定义了一个addr。否则老是报错。但不影响程序运行。

addr重新组合了拿到的数据。压入list里去渲染,这里做了下判断是否保存数据成功

 let addr = new object;
   console.log('content');
   console.log(content);
   let len = this.list.length + 1;
   addr = {
    id:len,
    name:content.name,
    tel:content.tel,
    city:content.city,
    county:content.county,
    is_default:content.is_default,
    postal_code:content.postal_code,
    province:content.province,
    area_code:content.area_code,
    address:content.province+content.city+content.county+content.address_detail
   };
   let is_add = this.list.push(addr);

5,编辑的时候。 onedit(item, index) 这个item就是我最先更改的list数据模型了。这里有需要的地区code码。这就是想要的。

因为跳到编辑页面,需要将地区重新解析出来。测试时可以。

其中待完善:编辑时候的详细地址未变化。删除地址等操作

下方。测试代码demo 

<template>
 <div class="home-page">
  <div class="home">
   <!-- top 高度固定6vh; -->
   <header-vue></header-vue>
   <!-- 内容滚动 -->
   <div class="home-content wrapper" ref="wrapper"> 
     <div class="content">
      <div style="min-height:900px; border:1px solid red;">
        进入订单页面显示订单列表。开始编辑地址收货表。如果之前有,查询出来,直接选择上。没有用户开始去编辑
      
        <!-- 新增收货地址:vant - addresslist -->
        <van-address-list
         v-model="chosenaddressid"
         :list="list"
         @add="onadd"
         @edit="onedit"
        />
        <!-- 弹出层,提示选择地址,没有则编辑 -->
 
        <van-popup v-model="show1" position="" :overlay="false">
         <van-button @click="show1 = false">关闭</van-button>
         <!-- 地址组件 -->
          <!-- <div style="width:100vw;height:100vh;background:#fff;">地址编辑内容</div> -->
          <van-address-edit
           :area-list="arealist"
           :columns-num="2"
           :address-info="addressinfo"
           show-postal
           show-delete
           show-set-default
           show-search-result
           
           @save="onsave"
           @delete="ondelete"
           @change-detail="onchangedetail"
          />
        </van-popup>
        <!-- vatn - card -->
        <van-card
         title="标题"
         desc="描述" 
         num="2"
         price="2.00"
         :thumb="imageurl"
        >
         <div slot="footer">
          <van-button size="mini">按钮</van-button>
          <van-button size="mini">按钮</van-button>
         </div>
        </van-card>
 
      </div>
 
     </div>
   </div>
 
  </div>
 </div>
</template>
 
<script>
import bscroll from 'better-scroll'
import headervue from '../../components/common/header/header.vue'
// 导入 area.js
import arealist from '../../../config/area.min.js'
 
import {card,button,toast,addresslist,popup,addressedit,area} from 'vant'
 
export default {
 name: '',
 components:{ 
  headervue,
  [card.name]:card,
  [button.name]:button,
  [toast.name]:toast,
  [addresslist.name]:addresslist,
  [popup.name]:popup,
  [addressedit .name]:addressedit,
  [area.name]:area,
 },
 data () {
  return {
   msg: 'welcome to home.vue app sss',
   chosenaddressid:'1',
   show:false,
   show1:false,
   arealist:'',
   searchresult:[
    { id: '1',
     name: '张三',
     tel: '13000000000',
     address: '浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室'
    }
   ],
   addressinfo:'',
   imageurl:'kdkk',
   list:[
    { id: '1',
     name: '张三',
     tel: '13000000000',
     province:'江苏',
     city:'无锡',
     county:'崇安区',
     area_code:'120000',
     address: '浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室',
     postal_code:'123456',
    }
   ],
  }
 },
 mounted(){
  // 初始化滚动插件 better-scroll
  this.scroll = new bscroll(this.$refs.wrapper,{
    scrolly:true,
    click:true,//一开始的点击事件被bscroll阻止了,设置这个才能点击
  })
 
  this.getorderdate()
 },
 methods:{
  getorderdate:function(){
   console.log('获取 该用户名下的订单表数据')
  },
  onadd() {
   console.log('新增收货地址');
   this.show1 = true;
   console.log('arealist')
   console.log(arealist)
   this.arealist = arealist;
   // 地址编辑默认信息
   this.addressinfo = new object;
  },
  onedit(item, index) {
   let addressinfo = new object;
   this.arealist = arealist;
   // toast('编辑收货地址:' + index);
   console.log('编辑收货地址:' + index);
   console.log(item);
   // 进入编辑模式
   this.show1 = true;
   addressinfo = {
    id:item.id,
    name:item.name,
    tel:item.tel,
    province:item.province,
    city:item.city,
    county:item.county,
    area_code:item.area_code,
    address_detail:item.address,
    postal_code:item.postal_code,
    is_default:item.is_default,
   }
 
   this.addressinfo = addressinfo;
  },
  onsave(content) {
   let addr = new object;
   console.log('content');
   console.log(content);
   let len = this.list.length + 1;
   addr = {
    id:len,
    name:content.name,
    tel:content.tel,
    city:content.city,
    county:content.county,
    is_default:content.is_default,
    postal_code:content.postal_code,
    province:content.province,
    area_code:content.area_code,
    address:content.province+content.city+content.county+content.address_detail
   };
   let is_add = this.list.push(addr);
   // 判断是否选中默认
   if (content.is_default) {
    this.chosenaddressid = len;
   }
   if (is_add) {
    this.show1 = false;
   }
   console.log(this.list);
   // this.list = listarr;
   // this.list = [{
   //   id: '1',
   //   name: '张三',
   //   tel: '13000000000',
   //   address: '浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室'
   // }];
  },
  ondelete() {
   toast('delete');
   console.log('delete');
  },
  onchangedetail(val) {
    // if (val) {
    //  this.searchresult = [{
    //   name: '黄龙万科中心',
    //   address: '杭州市西湖区'
    //  }];
    // }else {
    //   this.searchresult = [];
    // }
  }
  
 },
}
</script>
 
<!-- add "scoped" attribute to limit css to this component only -->
<style >
 .home-page{}
 .home{
  width: 100%;
 
 }
 .header{
  width: 100%;
  height: 6vh;
  border-bottom: 1px solid #ddd;
 }
 .home-content{
  height: 94vh;
  border: 1px solid #000;
  overflow: hidden;
 }
 
 /*弹出层*/
 .van-popup{
 /* width: 100%;
  top: 40%!important;*/
 }
 .van-address-list__add{
  position: relative!important;
  z-index: 1999;
  font-size: 14px;
 }
 .van-cell{
  position: relative!important;
 }
 .van-popup{
  height: 100%;
  width: 100%;
 }
 .van-address-list__group{
 padding-bottom: 10px!important;
 }
 
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网