問題タブ [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.

0 投票する
2 に答える
2655 参照

javascript - Backbone-relational.js + Backbone.View(s)

質問:ドキュメントは不足しており、私は初心者のようなものです。Backbone.Views を (backbone-relational.js から) Backbone.RelationalModel のインスタンスにバインドする適切な (あると仮定して) 方法を誰かが確認できますか? DOMへの更新/レンダリング? バックボーンの通常のモデル/ビュー バインディングに基づいて、いくつかの異なるアプローチを試しましたが、ほとんど成功しませんでした。

裏話 (/詳細): 私は Backbone.js でロープを学んでおり、この 1 週間で多くのことを学ばなければなりませんでした。明らかな何かが不足している場合 (これは非常に可能性が高いです - 以下の問題を処理する「正しい」方法を含む)、私に連絡してください。

私は、ネストされた辞書を大いに活用するmongodb-backed RESTインターフェース(完全に制御できない-またはサーバー側で動作を再構築する)を扱っているので、バックボーンでそれを最もよく表現する方法を読んでください(バックボーンが提供する優れたsave()+サーバー同期のものを壊さないでください)。

backbone-relationalligament.jsの2 つのオプションを見てきました。

私は backbone-relational.js から始めて、REST インターフェースによって返されるツリー内のさまざまな辞書用に作成された RelationalModels (Backbone の標準モデルに代わる backbone-relational のモデル) を持っています。それらの間の関係が定義されており、各モデルからの JSON を (それぞれの初期化関数で) ログに記録するコンソールは、全体的なコレクション レベルで fetch() コマンドでサーバーからすべてが正しく呼び出され、読み込まれていることを示しています。

それで、それはすべて素晴らしいです。

問題: 私は、これらの各モデル (および dom でテンプレートをレンダリングする必要があるバインドされた関数) の更新を「リッスン」しているビューを持っています。メイン ビューは fetch() で起動します。問題ありません。「トップ レベル」モデルをロードして dom にレンダリングしますが、その「トップ レベル」モデル内の「外部キー」モデルを表すビューは決して実行しません (上記の各モデルのコンソール ログによって証明されるように、データは確実に各モデルに読み込まれます)。

どんな洞察も非常に高く評価されます。

以下の Raynos の返信への直接の応答 (Raynos に感謝します!): サーバー上の (UpperLevelCollection url)/(UpperLevelModel id) に存在する UpperLevelModels を使用して、UpperLevelCollection のベース URL を定義した場合、これらの LowerLevelCollections を辞書キーにマップするにはどうすればよいですか?サーバー側からの各 UpperLevelModel の 1 つの JSON ダンプ? 言い換えれば、モデル内でコレクションを使用すると、このようにサーバーからのデータ ダンプを適切に処理し (明らかに非常に単純化されていますが、問題が発生します)、適切に保存/更新/同期することができますか?

0 投票する
4 に答える
10781 参照

javascript - Backbone-relational を使用して Backbone でネストされたモデルを作成する

backbone.jsアプリケーションでモデルをネストするためにbackbone-relationalを使用したいと考えています。

ドキュメントの例に従って、ネストされたオブジェクト (1 対多の関係など) を作成することができました。ただし、上位レベルのオブジェクトを更新する方法で下位レベルの要素をバインドする方法がわかりません。実用的なアプリケーションは非常に役立つチュートリアルになると思います。

だから私の質問は次のとおりです。次のように使用してTodos チュートリアルを拡張するにはどうすればよいですかbackbone-relational

  • 各アイテムのサブアイテムを追加/削除できます
  • サブアイテムをダブルクリックすると、それが編集されます (元の Todo の例と同様)
  • 項目をクリックすると、そのサブ項目が非表示/表示されます
  • サブアイテムは個別に取得されるのではなく、単純に Todo アイテムの配列属性です

更新:この質問のために jsfiddle を作成しました。これまでのところ、私は持っています:

  • 上記の Todo の例をインポートしました
  • TodoSubitemモデルとTodoSubitemListコレクションを作成しました
  • の代わりにTodo拡張するようにモデルを変更しました。RelationalModelModelHasManyTodoSubitem
  • subitem-templatehtml コードにa を追加しました

しかし、私はまだ方法がわかりません:

  • divsubitemsをクリックしたときにのみ表示される入力フィールドを追加しますTodo
  • Todoオブジェクトの属性としてサブアイテム データを持ちますがTodoSubitemView、それらに DOM 要素をバインドします (<li>タグなど)。
0 投票する
1 に答える
417 参照

javascript - ビューをモデル内に配置するのは悪い動作ですか? (バックボーン.js)

こんにちは、私は内部と内部にモデルを持つモデルを持っています...私はそれらすべてを表示し、ヒエラルキーでそれらに到達する必要があります。

すべてのモデルにはビューがあり、たとえば、B モデルが呼び出された関数をレンダリングする場合、両方の C モデルのレンダリング関数を呼び出す必要があると考えてください。

そこで、初期化メソッドをオーバーライドして、関連するすべてのビューをモデル内に作成することにしました。

私の質問は、そのような動作は mvc アーキテクチャにとって悪いことですか? それとも自然ですか?

0 投票する
2 に答える
2537 参照

javascript - バックボーン リレーショナル遅延読み込み

投稿とそのコメントを操作するアプリを作成するために、RESTful JSON API で Backbone を使用しています。Backbone Relational を機能させようとしてきましたが、遅延読み込みで問題が発生しました。

関連するコメントなしで、投稿のリストを読み込みます。リスト内の投稿をクリックすると、コメントを含めた完全な投稿を取得し、これをレンダリングするビューが開きます。

2 つの Backbone.RelationModels、投稿、およびコメントがあります。コメントへの投稿関係は次のように設定します:`

今私が直面している問題は、まだコメントが含まれていないリストを取得するとすぐに関係が初期化されることです。URI でモデルを取得して、後で完全なデータをロードします。ただし、関係は再初期化されないようです。Posts.get(1).get('comments') を呼び出すと、空のコメント コレクションが返されます。

この問題に最もうまく取り組む方法を誰かが知っていますか? データはありますが、コメントのコレクションが更新されていないようです。

編集: Post モデルに change:comments をそれ自体にバインドさせて、コレクションを更新することができます。ただし、 this.get('comments') は Comments コレクションを返すため、元のコメントの JSON を取得する確実な方法を見つけることができないようです。

注: 私のコレクションでは、次のコードを使用して JSON を解析し、API で動作するようにします。

これは、API によって返される JSON が、ネイティブの JSON 配列ではなく、インデックス付きキー (連想配列) を持つオブジェクトを返すためです。

本当にありがとう!質問があれば聞いてください。どこかで漠然としていると思います。

0 投票する
1 に答える
3099 参照

javascript - Backbone-Relationalで関係を定義する-オプションがどちらの方向を指しているのかわからない?

Backbone-Relationalのドキュメントを理解するのにかなりの時間を費やしています。のようなものを追加する関係が100%明確ではありませんincludeInJSON。おそらく、私が作成しようとしている構造を説明することによって、私の混乱を説明するのが最善でしょう。Venueネストされたモデルが0個以上あるモデルがありますAddress(1:nの関係)。バックエンドストアはMongoDBであり、オブジェクトを埋め込むことができます。この形式で保存したいのですが:

(醜いデータ構造は無視してください。簡潔にするために調整しました。)これで、次のような関係を設定したと思いVenueますAddress

正しく理解している場合は、をキーにシリアル化されincludeInJSONないようにするためにfalseに設定しますが、reverseRelationでは、 –のプロパティの配列として完全な(会場プロパティなしで)シリアル化するために空白のままにします。私の望み通りに-例えば。正しい?VenuevenueAddressincludeInJSONAddressaddressesVenue

同じように、私は結合スタイルの関係に関して同じ概念を理解しようとしています。VenueorganisationIDフィールドがあると考えてください:

関係を好むように思われるドキュメントの例を使用すると、次のBackbone.HasManyように設定する必要があると思いますOrganisation

...上記の例にシリアル化する必要がありますか?(つまり、をVenue取得してに挿入し、Organisationのリストをシリアル化しません)idorganisationIDOrganisationVenues

助けてくれてありがとう-この便利なライブラリを使うのを楽しみにしています。Backbone.js用に自分のリレーショナル接着剤を書こうとして私の目をつぶった後:-)

0 投票する
1 に答える
1471 参照

javascript - バックボーン リレーショナル イベントが起動しない?

私は createModels をオンにしているのでthemodel.get('subModels')、モデルのコレクションを返します。


変更されたサブモデル データを渡すと、mymodel

イベントをthemodel投げるべきではありませんか?changeそれは私にはありません。


同一のデータを渡すとさらにそうですmymodel

themodel.attributes.subModels新しいものは何もありませんが、スローaddとイベント。update

なぜこれらの問題が発生しているのかわかりません。助けていただければ幸いです。ありがとう!!!!

0 投票する
2 に答える
1246 参照

javascript - Backbone.js + リレーショナル + AMD ... リレーショナルのブートストラップ

私は何かを見失い、見落としているように感じますが、これにアプローチする方法がわかりません。また、質問する方法もよくわかりません...

まず第一に、私は AMD アプローチ (curl.js ライブラリを使用) を使用しているため、これはおそらくより困難になりますが、この問題のために AMD をあきらめていません。

「 window.bootstrap」プロパティに保存された、サーバーからのブートストラップデータのこの構造があります。

今、私はこれへのアプローチについて混乱しています。ここに私の ' DataModel/Block ' モジュールがあります:

モジュール ' DataModel/Department ' は、関係のない単純な RelationalModel です。また、ここで言及されているすべてのコレクションも、次のようなモデルへの参照以外は何もない単純なものです。

そして最後に、Bootstrap モジュールは次のようになります。

これから、それらのブロックの部門が見つかり、そこにモデルが割り当てられることを期待しますが、

...私を未定義にします。

しかし、これで終わりではありません。部門に関連するサーバーからの他のエンティティも取得します。そして、そのブートストラップから Department が自動的にアタッチされるので、透過的に使用できます。

このリレーショナル ライブラリを誤解しただけなのか、それとも AMD に対応していないのかはわかりません。どんな助けでも大歓迎です。

0 投票する
1 に答える
172 参照

javascript - Backbone.js のハイライト表示が壊れ、ページに大量のデータが表示される

アプリケーションで Backbone.js を使用しています。セグメントを URL に関連付けています。したがって、セグメントには多くの URL を含めることができ、特定の URL は任意のセグメントに含めることができます。URL ペインとセグメント ペインがあります。問題はハイライト部分です。そのため、セグメントをクリックすると、そこにある URL を強調表示したいと考えています。ページに表示する URL の数を 200 に制限しました。200 を超える URL がある場合は、最初の 200 をユーザーに表示し、残りはライブ検索を使用して探している URL を見つけます。 . 問題は、URL が 200 未満で、セグメントをクリックすると強調表示が機能することです。200 を超える URL があり、ユーザーがセグメントをクリックすると、強調表示が機能しません。200 を超える URL がある場合、コレクションでスライスを使用しています。最初の 200 を強調表示するだけですが、うまくいきません。これがコードスニペットです。これを修正する方法について何か良い提案はありますか?

関数の SegmentView.js でtoggleSelection:

0 投票する
3 に答える
5193 参照

javascript - アンダースコア テンプレートのヘルプが必要 - テンプレート コレクション

テンプレートにunderscore.jsを使用しています。これがサンプルテンプレートです。

backbone.js view.render() 内で、コレクションをテンプレートに渡しています。

ここでの私の質問は、ループ コードを記述する必要がありますか? コレクションを渡すだけでなく、コレクション内のアイテムごとに 1 つのアイテムをレンダリングするのに十分スマートなアンダースコアを使用することはできませんか? また、underscore.js はテンプレートをネストするためのものを提供していますか? コレクション内の各アイテムには、実際にはレンダリングする必要があるアイテムのコレクションもあります。このテンプレート内から別のテンプレートを呼び出すにはどうすればよいですか。もちろん、リンク、ヒント、チュートリアルは大歓迎です。

ありがとう!

0 投票する
1 に答える
643 参照

javascript - Backbone および/または Backbone-Relational を使用して、ネストされたすべてのモデルにイベントをバインドする方法はありますか?

私は非常に頑丈な BackboneRelational を持っています - 多数のネストされたモデルとコレクションを持つモデルです。基本的に、ユーザーがこのモデルまたはそのサブモデル/コレクションについて何かを変更した場合、これを示すために UI で何かを行う必要があります。したがって、サブモデルが変更されても発生するマスター変更イベントが必要です。これを行う簡単な方法はありますか?すべてのモデルを再帰的にトラバースして変更イベントを追加する関数を作成しましたが、同じモデルへの 2 回のバインド、競合状態などの問題があります。