select_law_by_tag() { this.laws_loading.is_loading = true; this.laws_loading.no_more = false; this.extractForm.page = 1; getLawByTag(this.extractForm) .then(res=>{ const {data} = res; this.laws_loading.is_loading = false; this.$nextTick(()=>{ this.laws = data.data }) if(data.last_page <= data.current_page) { console.log('no more true') this.laws_loading.no_more = true } this.laws_load(); }) .catch(error=>{}) }, laws_load() { this.laws_loading.is_loading = true; console.log('load law') if(this.laws_loading.no_more) { this.laws_loading.is_loading = false; return; } this.extractForm.page ++; getLawByTag(this.extractForm) .then(res=>{ const {data} = res; this.laws_loading.is_loading = false; if(data.last_page <= data.current_page) { console.log('no more true load') this.laws_loading.no_more = true } this.$nextTick(()=>{ data.data.forEach((item)=>{ this.laws.push(item) }) }) }) },
<el-form-item label="法規" prop="synthesis_id" v-loading='laws_loading.is_loading'> <div> <el-radio-group v-model="extractForm.law_id" v-infinite-scroll="laws_load" class="synthesis_selected" size="small" > <el-radio border v-for="item in laws" :key="item.id" :label="item.id" > {{item.title}} </el-radio> <p v-if="laws_loading.is_loading" style="text-align: center; height: 1rem; font-size: 0.5rem">加載中...</p> <p v-if="laws_loading.no_more" style="text-align: center;height: 1rem; font-size: 0.5rem">沒有更多了</p> </el-radio-group> </div> </el-form-item>
css 如下
.synthesis_selected {display: block; max-height: 200px; overflow-y: scroll;} .synthesis_selected .el-radio { margin:0.5rem;}
解決下拉失效的問題
主要是 下拉事件不能觸發導致,, 解決辦法是再 嵌套 觸發事件, 保證下拉到底事件觸發
最終解決代碼
或者 最正確的做法, 刷新組件, 讓組件填充container