2

私はバックボーンを初めて使用し (まだ Ruby on Rails モードで立ち往生しています)、コレクションをプロパティ/属性としてモデルに追加する方法について少し混乱しています (「属性」は正しい用語ですか?)。

たとえば、 という名前のモデルと、の配列を含むサーバーから返されたcurrent_planという名前の変数があります。(参加者のコレクションである)という名前の属性を持ち、json_dump.participants 変数から入力し、`current_plan.participants.where({first_name: "Dan"}) のようなコードを使用できるようにします。json_dumpparticipantsparticipants

私の初期化関数の一部を次に示します。

var current_plan = new Plan();

current_plan.set({attribute: val} ...other attributes... );
current_plan.participants = new Backbone.Collection(json_dump.participants);

しかし、それでは次のような通常の属性にアクセスする必要がありますcurrent_plan.attributes.attribute。また、 に正しいデータがあることがわかりますcurrent_plan.attributes.participants.modelsが、 で Collection メソッドを使用する方法がわかりませんcurrent_plan

明らかに、何が起こっているのか、なぜこれほど多くの追加レイヤーが関係しているのか理解できません。バックボーンのドキュメントは少しまばらなようで、私がやりたいことと一致するものを SO または Google 検索で見つけることができませんでした。これを説明する別の質問やチュートリアルがある場合は、誰かが私をそのように指摘してくれることに非常に感謝しています. Backbone Relationalプロジェクトも見ましたが、これは私が必要としているもののように思えますが、基本を理解するまで Backbone に複雑さを追加したくありません。

新しい Backbone ユーザーを支援するために提供できる支援に感謝します!

4

2 に答える 2

3

バックボーンフレームワークには、モデルとコレクション間の関係を処理する公式の方法がなく、バックボーンリレーショナルを使用していませんが、バックボーンコレクション/モデルに複数の関係があります。コレクションを使用してリレーションシップモデルを定義する場合、バックボーン属性ではなく、モデルオブジェクトのプロパティとして使用します。

var current_plan = new Backbone.Model(); //or backbone model extended 
current_plan.participants = new Backbone.Collection(json_dump.participants);

次に、@ andrew-hubbsが言うように、モデルとコレクションの属性を処理するために常にバックボーンAPIを使用して、たとえばバックボーンバージョンとともにコードの一貫性を保つ必要があります。次に、このようにモデルのプロパティにアクセス/設定できます

current_plan.get('property'); 
participant = current_plan.participants.get(1);
participant.get('property');
participant.set('name', 'bob');
于 2012-12-06T01:27:20.557 に答える
2
var currentPlan = new Plan(); // Assuming Plan is a Backbone.Model
currentPlan.set("participants", new Backbone.Collection(json_dump.participants));
currentPlan.get("participants") instanceof Backbone.Collection
currentPlan.get("participants").at(0) instanceof Backbone.Model

get/setメソッドを介してバックボーン モデルの属性ハッシュに常にアクセスする必要があります。これが機能しない場合json_dump.participantsは、おそらく正しくフォーマットされていません。この種のコレクションのインスタンス化に関するドキュメントの例をここで見ることができます。

はい Backbone.Relational は基本的にまさにこれを処理するプロジェクトです。モデル間の関係を定義できます。これにより、コレクションをモデルのインスタンスの属性として自動的に作成することが非常に簡単になります。

于 2012-12-06T00:13:48.377 に答える