Heim > php教程 > php手册 > Hauptteil

vue.js arbeitet mit dem Thinkphp-Dropdown zusammen, um paginierte Daten zu erhalten

WBOY
Freigeben: 2016-10-09 08:32:15
Original
2536 Leute haben es durchsucht

对照着jquery来学vue.js系列之配合thinkphp下拉获取分页数据
上篇文章介绍了vue.js如何ajax获取数据;
接着不可避免就遇到的是;
如何进行数据分页呢?
这里以thinkphp为示例讲解;其他场景性质一样;
示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin
示例链接:localhost/Home/Vue/web_page
项目中有张表province_city_area;
里面是全国的3000多个城市;这里就拿它做分页了;
一:thinkphp获取分页数据/Application/Home/Controller/VueController.class.php<br>     /**<br>      * 配合thinkphp分页示例<br>      */<br>     public function page(){<br>         // 获取总条数<br>         $count=M('Province_city_area')->count();<br>         // 每页多少条数据<br>         $limit=100;<br>         $page=new \Org\Nx\Page($count,$limit);<br>         $data=M('Province_city_area')<br>             ->limit($page->firstRow.','.$page->listRows)<br>             ->select();<br>         echo json_encode($data);<br>     }二:前端接收数据的核心部分;
要实现的是移动端往那种下拉就加载数据的效果;
首先是先用ready方法加载第一页的数据显示到页面中;
设置一个变量i=1;var vm=new Vue({<br>     el: '.box',<br>     data: {<br>         city: []<br>     },<br>     ready: function(){<br>         this.$http.get(url).then(function(response){<br>             this.city=response.data;<br>         })<br>     },<br> })然后呢;判断当滚动轴到底部的时候;
让i+1 作为get参数中的页数;
加载下一页的数据;并追加到city中;i++<br> vm.$http.get(pageData.url+'/p/'+pageData.i).then(function(response){<br>     // 用concat把下一页的数据追加到city中<br>     vm.city=vm.city.concat(response.data); <br> })三:完整的html;
/tpl/Home/Vue/web_page.html<!DOCTYPE html><br> <html><br> <head><br>     <meta charset="UTF-8"><br>     <title>Vue 配合thinkphp分页示例</title><br> </head><br> <body><br> <p></p><br> <p></p><br> <div><br>     <p v-for="item in city">{{item.name}}</p><br> </div><br> <br> <p style="display: none;">Keine Daten</p><br> <br> <vue /><br> <script><br> <br> // URL zum Abrufen von Daten<br> var pageData={<br> URL: "{:U('Home/Vue/page')}",<br> ich: 1,<br> Höhe: 0,<br> over: false<br> }<br> var vm=new Vue({<br> el: '.box',<br> Daten: {<br> Stadt: []<br> },<br> bereit: function(){<br> This.$http.get(pageData.url).then(function(response){<br> This.city=response.data;<br>          })<br> },<br> })<br> <br> <br> //Ermitteln Sie die aktuelle Position der Bildlaufleiste <br> Funktion getScrollTop() { <br> var scrollTop=0; <br> If(document.documentElement && document.documentElement.scrollTop){ <br>          scrollTop=document.documentElement.scrollTop; }else if(document.body) { <br>          scrollTop=document.body.scrollTop; }  <br> Zurück scrollTop; <br> } <br> <br> //Ermitteln Sie die Höhe des aktuellen visuellen Bereichs <br> Funktion getClientHeight() { <br> var clientHeight=0; <br> If(document.body.clientHeight && document.documentElement.clientHeight){ <br> clientHeight=Math.min(document.body.clientHeight, document.documentElement.clientHeight); }else{ <br> clientHeight=Math.max(document.body.clientHeight, document.documentElement.clientHeight); }  <br> Rückgabe clientHeight; <br> } <br> <br> //Ermitteln Sie die vollständige Höhe des Dokuments <br> Funktion getScrollHeight() { <br> Rückgabe Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); } <br> <br> // Ladestil hinzufügen <br> Funktion addLoading(){<br> var Loading=document.createElement('p');<br> Loading.className='loading'<br> Loading.innerHTML='Loading...';<br> Document.body.appendChild(loading);<br> }<br> <br> // Ladestil löschen <br> Funktion removeLoading(){<br> var Loading=document.querySelector('.loading');<br> Loading.parentNode.removeChild(loading);<br> }<br> <br> // Laden in „Keine Daten“ ändern <br> Funktion LoadingToOver(){<br> var Loading=document.querySelector('.over');<br> Loading.style.display='block';<br> }<br> <br> //Scroll-Ereignisse anhören<br> window.onscroll=function () {<br> Wenn (pageData.over) {<br>          return false;<br> }<br> If (getScrollHeight()-(getScrollTop() getClientHeight())<=50) {<br /> // Seitennummer 1 <1> pageData.i <br /> ​​​​//Laden anzeigen<br />          addLoading();<br />                    // Holen Sie sich die Daten der nächsten Seite <br />           vm.$http.get(pageData.url '/p/' pageData.i).then(function(response){<br />                                          removeLoading();<br /> If(response.data.length==0){<br /> pageData.over=true;<br /> LoadingToOver();<br />               }sonst{<br />                   vm.city=vm.city.concat(response.data);             }<br />          })<br /> }  <br /> } <br /> <br /> <br /> </script><br> </body><br> </html><br>Dies hat einfach die Funktion des Dropdown-Ladens von Daten implementiert; Haben Sie keine Angst vor dem langen Code oben; Mehr von ihnen verwenden native JS, um Scroll-Achsen-Überwachungsereignisse zu implementieren Gestalten Sie das Laden und die Ladestile einfach entsprechend dem Unternehmen
Verstanden; ich war in letzter Zeit aufgrund einiger Dinge sehr verstimmt; Dieser Artikel, der sich um viele Tage verzögert hat, ist endlich fertig
Weitere Informationen finden Sie direkt im Quellcode und in den Kommentaren Bai Junyaos Blog http://baijunyao.com/article/88




Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage