1. 程式人生 > >vue中實現先請求資料再渲染dom

vue中實現先請求資料再渲染dom

在專案中遇到了一個問題,下面是vue    template中的程式碼:


 

我之前的寫法是


這樣做的結果是下面取dom的操作,取到的dom都是undefined,也就是沒有取到。

原因是並沒有按照 請求資料—>渲染dom—>獲取dom的順序執行,實際的執行順序是 先獲取dom,而此時陣列option中還是空的,上面的v-for迴圈也就沒有渲染出dom,所以根本取不到(不理解是為什麼)

後來我又把請求資料寫在了created函式中,把取dom的操作寫在mounted函式中,竟然還是先執行取dom的操作(是通過alert的順序來判斷執行的順序),我也很絕望啊

最後終於找到了解決的辦法:


看到一個別人的回答是:“在資料請求的回撥中使用nextTick,在nextTick的回撥裡試試~”

還有一個人的回答是:“如果有依賴dom必須存在的情況,就放到mounted(){this.$nextTick(() => { /* code */ })}裡面”(這種之前我試過,我太好用,不懂為什麼)

我把這兩種方法綜合起來,其實主要是第一種方法,發現好用了!

相關推薦

vue實現請求資料渲染dom

在專案中遇到了一個問題,下面是vue    template中的程式碼:   我之前的寫法是 這樣做的結果是下面取dom的操作,取到的dom都是undefined,也就是沒有取到。 原因是並沒有按照 請求資料—>渲染dom—>獲取dom的順序執行,實際的

vue實現雙向資料繫結原理,使用了Object.defineproperty()方法,方法簡單

在vue中雙向資料繫結原理,我們一般都是用v-model來實現的 ,但一般在面試話會問到其實現的原理, 方法比較簡單,就是利用了es5中的一個方法.Object.defineproperty(),它有三個引數, Object.defineproperty(obj,'val',attrObject), 引數

vue通過後臺的資料個數自動渲染前端l列表個數(axios+vux)

1.通過axios獲取後臺資料。 submitForm () { return axios({ method: 'get', url: 'http://連結', withCredentials: true }) .then

vue實現全選功能

containe lda mod html ret model methods == -m <!DOCTYPE html><html><head><meta charset="utf-8"><title>Vue 測

vue實現百度地圖拖拽地圖定位功能

.com 元素 偏移量 locals 進行 函數 nco 查看 page 效果如果所示,拖動地圖。中間圖標不動,並且自動獲取地圖當前中心點的經緯度。然後就可以用經緯度做其他的操作了。。。首先查看了百度地圖的api。能實現這個功能最貼近的就是marker。marker

Unite 2018 | 《崩壞3》:在Unity實現高品質的卡通渲染

width diffuse 動態生成 LG 編輯 www. tgs term 謝謝 本篇文章為Unity官方論壇發布的文章 由於全是幹貨,為了方便自己查找,也為了避免刪除找不到了 於是復制了過來。。。 原文地址: http://forum.china.unity3d.c

Vue實現與後臺的數據交換(vue-resource)

交換 ins server img 展示 引入 oca 方式 文件夾 vue-resource是Vue.js的一款插件,它可以通過XMLHttpRequest或JSONP發起請求並處理響應。(但是目前它已經停止更新了) 1、在vue中安裝vue-resource插件 打開v

vue實現圖片全屏縮放預覽,支援移動端

# 安裝 npm install vue-photo-preview --save   # 引入 import preview from 'vue-photo-preview' import 'vue-photo-preview/dist/skin.css' Vue.use(pr

vue問題之被複用的vue檔案(用vue-echarts實現),資料有快取

一、問題 當多個路由複用同一個模板,此時在這幾個路由間切換,被複用的模板有資料快取問題。 如一個路由頁面出現的圖表有5個柱狀圖,在另一個路由頁面出現的圖表是7個柱狀圖,且資料項都不同, 問題:在另一個路由頁面會先出現第一個路由頁面的5個柱狀圖,再載入應有的7個柱狀圖 二、解決方法

vue 的set 方法 解決列表渲染的問題

列表渲染中,可能值變了但是頁面沒有響應。 Vue 提供了 set 方法,解決這個問題。 var app = new Vue({ el: '#app', data:{ onelist: [{ id: "010101020304", text: "he

vue實現滾動載入

需要安裝該外掛: cnpm i vue-infinite-scroll -S   // 生產依賴 --save 等價 在main.js檔案進行引入進來 data中設定 busy:false <

OKHTTP-RecyclerView實現網路請求資料

build.gradle中匯入需要依賴 implementation ‘com.google.code.gson:gson:2.8.5’ implementation ‘com.android.support:design:27.1.1’ compile ‘cn.yipianfengye

vue實現二維碼生成

安裝 :  npm install --save qrcodejs2 js部分: <script> import QRCode from 'qrcodejs2' export default { methods: {

vue使用mock模擬資料(前後端分離)

最近前後端有點不協調,用了一下mockjs,下面記錄一下 我的環境是webpack+npm+vue,首先就用npm安裝mockjs,安裝命令是 npm install mockjs --save-dev,使用淘寶映象也是可以的,就是使用cnpm替換npm,一樣的效果 安裝好mockjs後,在main.js

vuev-model的資料雙向繫結(重要)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body&

如何在分組報表實現組內資料補空行及組內頁碼

在對報表資料進行列印時,經常會要求進行精確列印,比如一張紙能列印 20 行資料,如果超過就分頁,如果不滿 20 行,則在資料下方進行補夠空行。這種情況最常見於銀行對賬資訊等明細資料的列印。同時,在某些業務中還會按照一些欄位分組,比如地區、類別等,在報表展示或列印時則要求先按照欄位進行分組,將分組欄位

vue實現滾動條緩慢向上移動的效果

.vue //用於判斷按鈕何時顯示 <div class="btn-top" v-if="scrollHeight > alarmHeight"> <el-button type="info" icon="el-icon-arrow

vue實現回到頂部功能

具體效果點選這裡檢視:   家盟家政 下面直接看程式碼:(不清楚的看對應註釋) <!-- 回頂部按鈕為一張50*50的圖片 --> <!-- btnFlag 控制圖片顯示隱藏 --> <!-- backTop 回頂部的方法 -->

【ES6】vueSwipe外掛處理資料應用於輪播分頁

JSON資料: category_list_res: [ { name: '美食', url: 'http://p1.meituan.net/jungle/bd3ea637aeaa2fb612

vue實現上下滑動文字通告的功能

<template> <div class="marquee"> <div class="marquee_title"> <span>免費微報</span>