2017-02-01 22 views
-4

私はちょうどバックボーンを使い始めています。私は非常に混乱した壁にぶち込まれています。私がやっている何バックボーンイベントの振る舞い

  1. は、初期化時にフェッチ呼び出し、タイプAのモデルインスタンスを作成します。
  2. 初期化中にfetchを呼び出すタイプBのモデルインスタンスを作成します。
  3. 両方からのデータを使用するビューを作成します。
  4. 両方のモデルからのsyncイベントをview.render()にバインドし、両方のAJAX呼び出しが返されるとテーブルを作成します(レンダリングは2回呼び出されますが、大したことではありません)。

私が期待しているのは、2番目の同期イベントが発生すると、両方のデータを使用してテーブルがレンダリングされるということです。

実際に起こっているのは、同期イベントが発生していますが、ビューがそれを使用しようとするとモデルデータは完全に空です(model.cidを確認して、最初に作成したモデル、それはちょうど全く何も含んでいない)。どのイベントがどのモデルから発生しているのかを知ることができるようにログを記録しており、レンダリングが期待どおりに2回呼び出されるのがわかります。

同じレンダリングを手動で呼び出すデバッグボタンを手動で(AJAX呼び出しが完了した後)呼び出すことができ、すべてがレンダリングされるので、AJAX呼び出しの両方が最終的に成功し、最終的には完全にモデル化されたモデル。

私は間違っていますか?イベントがここでやろうとしていることを根本的に誤解していますか?同期イベント後にモデルが完全に空になるのはなぜですか?実際のコードの欠如を十分に備えてかなり貧弱質問の

デイブ

+2

あなたはあなたのコードが何をしていると思っているか説明しました。しかし、それは起こっていることではありません。それが問題です。あなたのコードが何をすべきかについてのあなたの説明は、私たちが実際の問題を解決するのに役立つものではありません。私はコードを見る必要があります... [mcve] –

+0

私は間違いなくあなたが示唆したことをしなければなりません(最初から右に行っていましたが、それは午前1時であり、疲れていました)。私は唯一の一般的な質問はこれだと思います - 最初にモデルインスタンスを更新せずに同期イベントを起動することは可能ですか?その答えがいいえの場合、明らかに私は見つけなければならない奇妙なスコープの問題をどこかに持っていなければなりません – user3654762

答えて

-2

謝罪、。私は最初からすべてを書き直し、それを動作させた後、元のコードを1行ずつ書き直して、なぜ動作しないのかを理解しました。

この間には大きな差があることだけを言うのをしてみましょう:

this.listenTo(user, 'sync', this.render("userchange")); 

と、この:

this.listenTo(user, 'sync', this.render); 

私は機能を実行している「対「機能を渡す」上にアップ読み取る必要があります"

デイブ