2017-12-27 17 views
2

私はプランナー上に、必要なデータをロードするのに少し時間がかかるコンポーネントがいくつかあります。 を使用すると、順番にそれぞれロードされますが、ロードされるごとに毎日プランナーに表示されます。しかし、私はすべてコンポーネントが読み込まれるまで、白い画面が表示されます。私はこれが私のvueバージョンでアップグレードされて以来かもしれないと思います。(私は別のUIフレームワークに移行したので、私は確信が持てません)すべてのコンポーネントが作成されるまで待っているリストのレンダリング - それらを1つずつ表示したい

これはコンポーネントのレンダリングです[]としての

<div 
    v-for="(date, index) in plannerDates" 
> 
    <planner-day 
    :date="date.date" 
    class="day-container col-xs-12 col-sm-4 col-md-3 col-xl-2-mod" 
    :key="index" 
    /> 
</div> 

plannerDates開始されますが、2日のフィルタに基づいてロードされます:「)POSSと同じくらい私の例をダウン易しく書き直さまし。要するに、それはplanner-dayコンポーネントの作成イベント内loop - this.plannerDates.push(someMoment)

のようなものだ、私は比較的プロセスにしながら、少し時間がかかる方法のカップルを呼び出す:

created() { 
    this.loadDay(this.date) 
    this.dataLoaded = true 
    console.log('Day loaded: %s', this.date.format('DD/MM/YYYY')) 
}, 

私はおよそに登場するコンソールログを参照してくださいそれぞれの間に2分の1のギャップがありますので、私のコンポーネントも同様に2分の1のギャップでページに表示されることを期待しています。

注:私は、私が見mounted()にコンソールログを追加する場合、すべての最初に作成その後、私はこれが問題になる期待が、私はVueのは、順番に各部品を実装する方法を得ることができますので、取り付けられましたか?

+0

私はあなたがキーを使うべきだと思う:これで問題が解決し作成した設定方法を念頭に置いて

、。私はキーが読み込まれているデータと新しいデータを簡単に理解するのに役立つと思います。それが問題を解決するかどうかはわかりませんが。 – aks

+0

申し訳ありませんが、私の通常のコードにはキーがありますが、私の例を最小限に抑えて誤って削除しました。 – webnoob

+0

'nextTick()'を使ってみましたか? https://vuejs.org/v2/api/#Vue-nextTick。 – Maurice

答えて

0

私のアプリに無関係の変更を加えながら、私はloadDay()メソッドを約束してラップし、コンポーネントが順番に次々にレンダリングするようにしました。メソッドは、私が期待していた方法で次々にレンダリングするために非同期的に実行できる必要があるように見えます(今、私はそれについて考えています)。

created() { 
    Promise.resolve().then(() => { 
    this.loadDay(this.date) 
    this.dataLoaded = true 
    console.log('Day loaded: %s', this.date.format('DD/MM/YYYY')) 
    }) 
}, 
関連する問題