javascript - Vue2 Ajax(axios)分頁更新dom數據不成功
問題描述
由于在項目中,后臺的數據一次性給前端,前端需要做一些分頁的處理。用的是Vue2+Axios 來做ajax請求 目前可以得到后端的數據console.log打印成功,但就是更新不上dom上。
html
<section class='main'> <ul class='list'><li v-for='info in listt2'> <img src='http://www.cgvv.com.cn/wenda/2776.html#' v-bind:alt='info.Name'> <h4> <a target='_blank' v-bind:href='http://www.cgvv.com.cn/wenda/’content.html?’+info.id'>{{ info.title }}</a></h4> <span class='ckey'>【{{ info.key }}】 </span> <span style='color: #ffffff;'> {{info.id}}</span></li> </ul> <!--分頁按鈕區域--> <p v-show='onn'> <button @click='page(’last’)' v-show=’curPage>0’>上一頁</button><button @click='page(’!last’)' v-show='curPage<pageCount-1'>下一頁</button> </p></section>
JS
Vue.prototype.$ajax = axios; //修改原型鏈 var vm = new Vue({el: ’.main’,data: { listt2:[ ], //頁面要展示的數據 pageSize:10, //翻頁每頁顯示數據 curPage:0, //當前頁面 pageCount:’’, //總共頁面數 onn:true, //默認顯示分頁 items:’ ’, //后臺數據 },created:function(){ //Ajax獲取后臺數據,獲取的數據存儲在 this.items var url = 'api.json'; this.$ajax.get(url).then(function (response) { var jsons = response.data.getJson; var self = this; this.items =jsons; console.log(self.items);}).catch(function (error) { console.log(error);}); this.fanye(); //調用分頁},methods: { page: function (el) { //點擊翻頁el == ’last’ ? this.curPage-- : this.curPage++;var curtotal = this.curPage * this.pageSize;var tiaoshu = this.curPage * this.pageSize + this.pageSize;this.listt2 = this.items.slice(curtotal,tiaoshu);document.body.scrollTop = 0; }, fanye: function () { //分頁處理var _this = this;_this.listt2 = [];if (_this.items) { _this.pageCount = Math.ceil(_this.items.length / _this.pageSize); for (var i = 0; i < _this.pageSize; i++) {if (_this.items[i]) { _this.listt2.push(_this.items[i]);} }} }}})
返回的模擬數據格式
{ 'getJson':[{ 'id':'59', 'key':'science', 'title':' 動物也是科技宅,這些智能科技裝備你想要嗎? ', 'time':'2017-05-12', 'name':'兩個質子', 'eng':'lianggezhizi'},{ 'id':'60', 'key':'science', 'title':' 肯定你沒見過的養老新科技! ', 'time':'2017-06-19', 'name':'老年健康生活方式', 'eng':'aged-expo'}]}
已檢查多遍,仍是只有樣式沒有數據,還望大牛指點
問題解答
回答1:created方法里面請求的第一個then里面,把var self = this; 提到this.$ajax.get(url) 上面,作用域的問題,then方法里面的this已經不再是vue里的this
回答2:你created ajax數據獲取是異步的,你this.fanye()執行的時候,根本沒有數據傳入; 你可以打斷點,console.log數據,試一下先
相關文章:
1. javascript - js 有什么優雅的辦法實現在同時打開的兩個標簽頁間相互通信?2. css3 - Typecho 后臺部分表單按鈕在 Chrome 下出現靈異動畫問題,求解決3. java - 新手做一個安卓視頻播放器,想實現一個進度條,按鈕那種在視頻下方懸浮的功能,不知道思路!4. javascript - jquery怎么給select option一個點擊時觸發的事件,如圖 如果選擇自定義觸發一個時間?5. nginx配置server模塊的問題6. java - android代碼重構:如何把app設置里的頭像UI做成通用的?7. node.js - express請求的具體方法8. javascript - angular和jquery都用到了$符號,一起用會不會沖突?9. 想找個php大神仿個網站。10. javascript - 怎樣限制同一個瀏覽器不能登錄兩個賬號
