airyland / vux

Mobile UI Components based on Vue & WeUI
https://vux.li
MIT License
17.59k stars 3.71k forks source link

scroller组件筛选时内容高度变化,调用reset仍然是原高度 #962

Closed sixiakun closed 7 years ago

sixiakun commented 7 years ago

vux 2.0.13 chrome模拟开发,iPhone模拟 初始获取数据,使用了pullup,image 更换筛选条件,获取的只有一个数据,调用了 image,还是有很长的滚动条 image,请问是有重新计算高度的方法吗

airyland commented 7 years ago

就你上的代码而言,并不能确定你是否正确地在数据获取到后才进行reset。

sixiakun commented 7 years ago

代码未优化,写的有点乱,不过确实是获取后调用的,请指点。。 methods:{ hideFilter (cond,subm) { this.$emit('hideFilter') if(subm) $.extend(this.condition, cond) this.offset = 0; this.showLd = true; this.hasNext = true; this.$refs.list.enablePullup() this.loadData(this.reset(true),true) }, getDefault () { this.$http.get('/merp.h5/api/base/warehouse/default').then(res=>{ this.condition.warehouses = res.data.id; this.loadData() }) }, loadData (reset,notAdd) { this.$http.get('/merp.h5/api/stock/list/item',{ params:{ category: this.condition.category||null,// 分类 brand: this.condition.brand||null,// 品牌 warehouses: this.condition.warehouses,// 仓库 storageName: null, keyword: null, offset: this.offset, limit: 20, // 只显示预警 warn: false, _s:this.$store.state.session }}).then(res=>{ if(!res.data.datas[0]){ this.showErr = true this.errMsg = '没有数据' } this.showLd = false; if(notAdd) this.data = res.data.datas else this.data = this.data.concat(res.data.datas); this.offset += res.data.limit; if(!res.data.hasNext){ this.$refs.list.disablePullup() this.hasNext = false } if (reset) reset() }).catch(err=>{ this.showErr = true this.errMsg = err; }) }, infiniteData(){ this.loadData(this.reset) }, reset(backT){ if(backT)this.$nextTick(()=>{ this.$refs.list.reset({top:0}) }); else{ this.$refs.list.donePullup() this.$nextTick(this.$refs.list.reset); } }

airyland commented 7 years ago

代码也太没有可读性了,自行格式化吧。

``` js
``` 
sixiakun commented 7 years ago

不会用markdown,有点苦逼,一个个空格敲上去。。,请指点 methods:{   hideFilter (cond,subm) {     this.$emit('hideFilter')     if(subm) $.extend(this.condition, cond)     this.offset = 0;     this.showLd = true;     this.hasNext = true;     this.$refs.list.enablePullup()     this.loadData(this.reset(true),true)   },   getDefault () {     this.$http.get('/merp.h5/api/base/warehouse/default').then(res=>{      this.condition.warehouses = res.data.id;      this.loadData()     })   },   loadData (reset,notAdd) {     this.$http.get('/merp.h5/api/stock/list/item',{     params:{       category: this.condition.category||null,// 分类       brand: this.condition.brand||null,// 品牌       warehouses: this.condition.warehouses,// 仓库       storageName: null,       keyword: null,       offset: this.offset,       limit: 20,       // 只显示预警       warn: false,       _s:this.$store.state.session     }}).then(res=>{       if(!res.data.datas[0]){        this.showErr = true         this.errMsg = '没有数据'      }       this.showLd = false;     if(notAdd) this.data = res.data.datas     else this.data = this.data.concat(res.data.datas);       this.offset += res.data.limit;       if(!res.data.hasNext){         this.$refs.list.disablePullup()      this.hasNext = false   &nbsp  ; }       if (reset) reset()     }).catch(err=>{        this.showErr = true        this.errMsg = err;     })   },   infiniteData(){     this.loadData(this.reset)   },   reset(backT){     if(backT)this.$nextTick(()=>{       this.$refs.list.reset({top:0})     });     else{       this.$refs.list.donePullup()       this.$nextTick(this.$refs.list.reset);     }   }

sixiakun commented 7 years ago

试了下 ,第一次数据少高度还是那么高,再请求数据少的就没有那么高了