問題タブ [backbone-relational]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - モデル内のネストされた配列からコレクションを生成する backbone.js
私がやろうとしていることは次のとおりです。まず、アクティブなサイト ユーザーのリストを読み込みます。これらの各ユーザーは、映画のリストに関連付けられています。ユーザーをクリックすると、そのユーザーの映画のリストが次のメニューに表示されるようにします。しかし、最初の JSON 要求で各ユーザーの完全な映画リストを読み込む代わりに、backbone-relational にパッケージ化されている model.fetchRelated("key") オプションを使用して遅延読み込みを実行しようとしています。
私の見解では、イベント リスナーがあります。
そして私のモデルには選択機能があります:
問題は、this.fetchRelated("movies") が非同期イベントであるため、'add' が呼び出されたときに、ムービーが実際に読み込まれないことです。だから私は私のオプションがここにあるのだろうかと思っています。私が持っていた1つのアイデアは、これをjQueryの遅延オブジェクトにラップすることでした...基本的には、コールバックを使用します。ただし、これを行う方法が正確にはわかりません。また、コールバックの形式を使用することが本当に優れたバックボーン設計であるかどうかもわかりません。
コールバックまたはいくつかの(望ましい)システムを使用して、これを実装する方法を知っている人はいますか? ありがとう!
編集:
deferred を使用してなんとか取得できましたが、deferred を使用しないより優れたバックボーン ソリューションがあるかどうかはまだ疑問です。
javascript - Backbone.js toJSON()属性を含まない
私は本当にこれに頭を包むことができません。何らかの理由で(非同期リクエストと関係があると思われます)、モデル属性がtoJSON()関数を使用して適切に変換されていません。FWIW、django-relational fetchRelated()を使用して遅延読み込みを実行しようとしています。
ここで、fetchRelated()リクエストを作成し、新しいビューを作成しました。
そして、これは次のレンダリング関数を呼び出します。
次に、UserMovieListItemレンダリング関数を呼び出します。
これがキッカーです。最初のconsole.log(this.model.attributes)は、すべての属性を本来あるべき状態で表示します。それは完全にうまくいくようです。ただし、(this.model.toJSON())は、fetchRelated()の前に提供されたURI属性とid属性のみを返します。ここで一体何が起こっているのですか?UserMovieListItemのthis.modelを'change'でバインドしてレンダリングすると、レンダリングされますが、0.5秒ほど後に...}、
私のユーザーモデルは次のように定義されています。
backbone.js - 1 つのフェッチ リクエストから多くのモデルまたはコレクションを取得する方法
応答が次のようなフェッチ要求があります。
ご覧のとおり、応答は、オブジェクトの配列である属性 follower を持つオブジェクトです。
この応答から、次の属性を持つ 1 つのモデルと 1 つのコレクションを作成したいと思います。
もう 1 つは、モデルのコレクションです。
私の目標をアクティブにする適切な方法は何ですか?
Backbone.Relation を使用できますか?
はいの場合、いくつかの例がありますか?
backbone.js - バックボーン/バックボーン-リレーショナルアプリのビュー+サブビュー
私はバックボーン、バックボーンリレーショナル、およびスタックエクスチェンジを介した読み取りからWebアプリの構築について多くのことを学んでいます。最初に、コミュニティに感謝します。
今、私は、ネストされたモデルとサブビューに関連するこの現在の問題を理解しようとすることに固執しています。
このチュートリアルを拡張して、各ワインの「チェックイン」を追跡することにより、バックボーンリレーショナル、ビュー/サブビュー、およびイベント処理について学習しようとしています。
サーバー側を拡張して、次のようなチェックイン用の適切なJSONとバックボーンリレーショナルモデルを返しました。
そして、そのようなワインモデル:
CheckInListViewとCheckInItemView(WineListViewとWineListItemViewと同じ)を作成し、WineViewRender関数を使用して次のようにCheckInをレンダリングしました。
また、wineview内に、チェックインを作成し、特定のイベントに関連付ける新しい関数を作成しました。
}
わかりました-まだTL/DRを実行していない場合-これはすべて、UIの観点からは正常に機能しているようです-つまり。すべてが正しくレンダリングされ、Dbに保存されます。
しかし、コンソールで、新しいチェックインを(上記のconsole.logsの間で)プッシュすると、チェックインリストビューの追加バインディングがwachボタンを押すと複数回呼び出されることに気付きます-これにより、ビューの実行方法に何か問題があると思いますイベントの伝播について基本的なことを理解していません。
なぜこうなった ?予想される動作ですか?私は正しくやろうとしていることに近づいていますか?
あなたの助けではないにしても読んでくれてありがとう。
==
add(およびその他の)イベントにバインドされているCheckinListViewおよびCheckInListItemビューの関連部分は次のとおりです。
==============================================
イベントのバインドとビューの終了に関するコメントは、これをデバッグするための正しいヒントでした。
1)ネストされたビューを適切に閉じてバインドを解除していなかったため、DOMに何も存在していなくても、ゴーストイベントのコンシューマーが残っていました。
2)サブビューでのみ何かを実行したい場合にのみ、イベントをバインドする必要があります。
例-サブビューにチェックボックスがある場合、メインビューにはモデルがあるので、メインビューでサブビュー変更イベントをバインドし、そこでイベントを処理できます。これが「正しい」方法かどうかはわかりませんが、私がしなければならないことにはうまくいきます。(mm ..スパゲッティコードはとてもおいしいです)
3)これに苦労することで、UXについてもう少し考え、UIを簡素化することができました。
4)JSON呼び出しですべてのデータをネストすることにより、サーバーへの呼び出しを「保存」しようとしていました。そして、これをやり直すとしたら、データをネストするのではなく、ワインIDをチェックインIDに関連付けて、タスクが選択されるとコレクションが読み込まれる別のコレクションを作成することで、バックエンドでデータを処理します。 -これは好ましい方法ではないと思いましたが、多くの人がそうしているようです。
上記の「正しい」方法の質問についての考えや、「シンプルなバックボーンアプリ」を超えたチュートリアルを誰かが指摘できる場合は、引き続き歓迎します。
javascript - backbone.js でリレーションを処理する方法
モデルの関係に関して backbone.js アプリケーションを設計する方法に行き詰まっています。
いくつかの関係を持つ event model がある場合、ユーザー モデルには多くのイベントを含めることができ、イベント モデルには多くのコメントと参加を含めることができます。ユーザーは多くのコメントを持つことができ、参加は 1 人のユーザーと 1 つのイベントを持つことができます。うわー、なんて混乱!
わかりましたので、ユーザーがページをロードしたときにイベントのリストをロードし、ユーザーがイベントをクリックすると、そのイベントに関する残りの情報 (コメント、参加、ユーザー) をロードすることを考えました。
問題は、ある種のグローバル変数を使用してすべてのイベント、ユーザーなどを保持する必要があるか、サーバーから情報を取得するときにそこに配置する必要があるか (そして、サーバーから何かを取得する前にそこをチェックするか)、おそらくいくつかの場合です。一種のローカルストレージ (バックボーンリレーショナルを使用してこれを行うにはどうすればよいですか?)。
私が持っていた別のアイデアは、すべてのイベントに独自の独立したデータを持たせることです.これの問題は、イベントをクリックするたびに冗長なデータを送信する可能性があることです.
どのような方法をお勧めしますか?
ありがとう!
backbone.js - リセット/フェッチ時にバックボーン コレクションがモデルから切り離される
2 つのビューがあるアプリケーションを開発しています。
ビュー 1 はドキュメントのリストで、いくつかの重要な詳細が示されています。ビュー 2 はドキュメント自体です。編集可能。
アプリケーションはマルチユーザーです。そのため、アプリはサーバーをポーリングしてコレクションの更新を確認します。
問題は、コレクション (ビュー 1) が更新 (.fetch) されると、子モデルからすべてのイベントがバインド解除されることです。ビュー 2 で開いているものを含めます。フェッチ前と同様に、ドキュメント (モデル) の変更はリスト (コレクション) に反映されていましたが、フェッチ後、ドキュメント (現在は古いモデル) はリスト (コレクション) とは無関係になりました。 .
backbone.js ソースを見ると、これは意図した動作です。これに対する回避策はありますか?
backbone.js - バックボーン リレーショナル fetchRelated がリクエストを送信していない
Rails 3.2 バックエンドで backbone.js とバックボーン リレーショナル 0.5.0 を使用しています。has_many Notes の Card モデルがあります。
これが私の JS モデルとコレクションです。
通常のフェッチは問題なく機能しますが、コンソールで fetchRelated を実行すると、空の配列が得られます。
奇妙なのは、これが機能することです:
その方法を使用して応答テキストを解析することもできましたが、非常に汚い感じがします。
ここで何が欠けているか知っている人はいますか?
前もって感謝します、これは本当に私を苦しめています!
ストゥ
rest - 複数のクエリではなく、1 つのクエリを使用してバックボーンでデータをブートストラップする
私が間違っている場合は修正してください。ただし、1 つの複雑なクエリは、複数の小さなクエリよりも安価です ->質問? リストされた質問には反対意見があるようです。最も高価な操作は、データベースへの接続の開閉であると常に教えられました。その場合、アプリケーションの起動時にデータをブートストラップする最も効率的な方法は何ですか?
簡単にするために、私のアプリケーションには、最新の投稿、最新のカテゴリ、ログインしているユーザー、および最新のタグのコレクションが必要であるとしましょう。これで、このすべてのデータを 1 つのクエリでフェッチすることも、このデータを個別にフェッチすることもできます。どちらをお勧めしますか?私が単一のクエリを使用した場合、Backbone では通常どのようにこれを行い、Restful API ではどのようにこれを行いますか?
本当にありがとう
タイロン
javascript - バックボーンリレーショナルのカテゴリモデル変更への対応
バックボーン リレーショナルを使用してモデル リレーションシップを設定しています。これにより、Item
は に属しColumn
ます。項目を列に追加することはうまくいきますが、古い列から項目を削除するために、項目の既存のビューを参照するにはどうすればよいですか? (したがって、アイテムは現在、列全体で複製されています。)
この JSFiddle - http://jsfiddle.net/geVPp/1を参照してください(ColumnView
removeItem
イベント ハンドラーにコードを実装する必要があると思いますが、間違っている可能性があります)。
(UI コントロールがまだないため、インスタンス化の例はスクリプトの最後にあります。)
フィドルからの ColumnView は次のとおりです。
javascript - バックボーン モデル フェッチにデータ オプションを追加すると、コールバックがトリガーされないのはなぜですか
バックボーンで直接モデルを使用して単純なフェッチを行っています。
これは完全に機能します。
ただし、リクエストでパラメーターを送信したいのですが、これを行うと機能しなくなりますか? エラーは報告されていませんか?
誰でも助けることができますか?リクエストはサーバーから完全に行き来するように見えますか?