const app = getApp(); Component({ properties: { }, data: { list: [], subList:[], subjects:[], subCurrent:-1 }, pageLifetimes:{ show(){ if(!this.disciplines) this.pullDisciplines(); } }, attached(){ this.options = {page:1, limit:10}; this.pullDisciplines(); this.pullSubjects({refresh:1}); }, methods: { pullSubjects({refresh=0}={}){ if(refresh){ if(refresh==1){ this.options.page = 1; var { options } = this; }else if(refresh==2){ var {page, per_page} = this.options; var options = {...this.options,page:1, per_page: page*per_page}; } }else{ this.options.page++; var {options} = this; } return app.api("weapps.paths")(options).then(({subjects})=>{ let length = subjects.length; if (!refresh){ subjects = this.data.subjects.concat(subjects); var status = length>0?200:204; }else{ var status = length>0?200:205; } this.setData({ subjects, status}); }).catch(e=>{ this.setData({subjects:[], status:e.code}); }) }, onPullDownRefresh(){ this.pullSubjects({refresh:2}); }, onReachBottom(){ if(this.data.status==200) this.pullSubjects(); }, pullDisciplines(){ this.disciplines = []; app.api("disciplines")({source:"subject"}) .then(res=>{ console.log(res); this.disciplines = res.disciplines; this.disciplines.unshift({id:"",name:"全部", sub_disciplines:[]}); this.setNavList({disciplines: this.disciplines, key:"list"}); //this.setNavList({disciplines: this.disciplines[0].sub_disciplines, key:"subList"}); }).catch(e=>{ this.disciplines = null; }) }, setNavList({disciplines, key}){ let list = disciplines.map(i=>{ return {text: i.name, id: i.id}; }) this.setData({[key]: list}); }, onCateChange({detail}){ console.log(detail); let {current, value} = detail; this.options.discipline_id = value.id; this.setNavList({disciplines: this.disciplines[current].sub_disciplines, key:"subList"}); this.setData({subCurrent:-1}); delete this.options.sub_discipline_id; this.pullSubjects({refresh:1}); }, onSubCateChange({detail}){ console.log(detail); let {current, value, source} = detail; if(source!="touch") return; if(value.id) this.options.sub_discipline_id = value.id; else delete this.options.sub_discipline_id; this.pullSubjects({refresh:1}); } } })