情景說明:
之前用 vue 做資料繫結更新時,發現一個莫名奇妙的問題。
我在 vue 例項中宣告瞭一個陣列屬性如
books: []
,在非同步請求的回撥函式中使用this.books = res.data.data;
進行資料更新,更新步驟後面緊跟著列印了console.log(this.books)
,列印資料顯示確實更新成功!但頁面資料渲染無論是{{books.length}}
還是{{books}}
都顯示沒有資料!!!這就腦瓜子疼了,花了老長時間反覆證明了:
this.books
資料肯定更新上去了,但它喵的{{books}}
就是不顯示!敲重點:我是在 axios 的回撥函式中使用的 this 更新資料!
最後想起了一個小細節,axios 非同步通訊的回撥函式我用的是函式表示式
axios({xxx}).then(function(res){xxx})
,格式示例如下:axios({ url: url, method: "get", headers: { token: token }, //自定義請求頭資料傳遞token params: { userId: userId } }).then(function(res) { //上面的回撥函式用的標準格式 } });
使用這種格式的回撥函式寫法,如果在回撥函式中,使用 this,那麼,這個 this 就不是 vm(ViewModel) 物件了,而是回撥函式自身這個物件!!!
所以,使用這種回撥函式寫法,在回撥函式中,就不能使用類似
this.books
進行資料更新!只能使用vm.books
(vm 指的是建立 vue 例項物件時的引用或物件屬性名稱)來進行對 vue 物件資料的更新。如果想使用 this 來實現資料更新,那就必須使用回撥函式的簡寫格式:
axios({xxx}).then((res)=>{xxx})
,格式示例如下:axios({ url: url, method: "get", headers: { token: token }, //自定義請求頭資料傳遞token params: { userId: userId } }).then((res)=>{ //上面的回撥函式用的簡寫格式 } });
使用這種簡寫格式的回撥函式寫法,就可以直接在回撥函式中使用 this,此時,這個 this 也是 vm(ViewModel) 物件!!!
PS:好吧,這細節也是沒誰了,也怪我自己突然沒注意到,使用了標準格式的回撥函式寫法~
但是,話說 ,為什麼它喵的,使用標準格式寫法,this 指的不是 vue 例項物件,但是用它更新的資料如
this.books
也給更新上去了,列印出來也真的是一點毛病沒有???
vue 中使用 this 更新資料的一次大坑
相關文章
- vue中動態修改陣列的展現(資料更新,檢視不更新驗證)Vue陣列
- vue3 - 使用reactive定義響應式資料進行資料修改賦值時,資料更新但檢視不更新VueReact賦值
- matlab 迴圈中使用的儲存資料方法 #更新中Matlab
- vue資料入口initSate開始分析資料驅動更新原理Vue
- Dynamics CRM 如何使用XrmToolBox中的Bulk Workflow Execution批量更新資料
- vue筆記-vue專案中物件陣列資料變化,但檢視未更新的解決方案?Vue筆記物件陣列
- 檔案操作中的幾個大坑
- MySQL更新資料,如何使用updateMySql
- MongoDB資料庫中更新與刪除資料MongoDB資料庫
- vue 自定義指令實現資料拉取更新Vue
- 使用 jQuery 讀取 Vue 元件的資料jQueryVue元件
- 更新、插入資料庫所使用的UPDATE() (轉)資料庫
- 使用特殊的技術更新資料庫(ABAP)資料庫
- 一次寫程式碼引發的vue資料驅動思考Vue
- 當資料改變時,VUE是如何實現DOM更新的?Vue
- vue2.0資料更新,重新渲染檢視的三種方法Vue
- vue中如何監聽vuex中的資料變化Vue
- vue中echarts的動態渲染資料watchVueEcharts
- vue中的雙向資料繫結原理Vue
- Vue 單檔案中的資料傳遞Vue
- Vue中的$set的使用Vue
- 一次使用InfluxDB資料庫的總結UX資料庫
- vue3最新學習資料集合,不斷更新Vue
- C++ 及標準庫中的那些大坑C++
- vue中如何使用mockjs摸擬介面的各種資料VueMockJS
- 資料結構專題頁(更新中...)資料結構
- 在vue專案中mock資料VueMock
- vue中axios請求資料VueiOS
- Vue 使用中的小技巧Vue
- vue中當資料為空時的處理Vue
- vue3中獲取proxy包裹的資料Vue
- 使用Sqlserver更新鎖防止資料髒讀SQLServer
- 理解vue中的scope的使用Vue
- 使用oracle 閃回查詢找回誤更新的資料Oracle
- 記一次mysql資料庫被勒索(中)MySql資料庫
- 資料分析常見數學公式(更新中...)公式
- PowerDesigner 16.5學習資料(更新中)
- 淺談Vue中的資料繫結的實現,以及Vue3.0的proxyVue