:臆面もなくそれをチェックアウト、私は今日与えた答えを参照のうえ、それがどんな人生を容易にしません。 Backbone-relationalを使用すると、モデルとサブモデルのコレクションが自動的に作成され、イベントは親子関係を通じて管理できます。
サンプルコードを提供するだけで、味わいを得ることができます。 サンプルコードの一部がこのように見える場合があります。
ユーザーは多くのイベントがあります:あなたはバックボーン・リレーショナル・モデルを作成する場合
User = Backbone.RelationalModel.extend({
relations: [
type: Backbone.HasMany, // Type of relationship
key: 'events', // How we reference the sub-models in collection
relatedModel: 'Event', // The sub-model type
collectionType: 'EventCollection', // The sub-model collection
reverseRelation: {
key: 'belongsToUser' // Key we use to refer to the parent
}
],
// Other Backbone.Model properties and functions
});
、それは自動的にあなたが指定する「キー」にちなんで名付けられたあなたのためのサブモデルのコレクションを作成します。だからあなたが持っている各ユーザーは、関連するイベントのコレクションを整理して整理します。
基本的に、ユーザーを作成またはフェッチするときは、必要な関連モデルへの参照を与えます。たとえば、ユーザーID = 1の場合、イベント5,7、および11が必要な場合があります(IDのみを使用しています)。これらの参照が配列形式で定義されている限り、リレーショナルのfetchRelatedメソッドを使用してそれらの参照を遅延ロードすることができます。
myUser = new User();
myUser.set({
name: 'RayMysterio',
age: '26',
events: [5, 7, 11] // Or this might just come with the User object from your server
});
myUser.fetchRelated('events');
// This will go fetch the related events for this user model from the URL you designate.
myUser.get('events');
// The collection of events are treated like an attribute of the User model.
myUser.get('events').find(function(eventModel){
return // some find condition - or whatever you want to do on that collection
});
特定のリスナーをサブモデルにバインドしたい場合があります。
myUser.bind('add:events', function(model, collection) {
// Whatever code you want to happen when new models are added to the user events coll
});
等等
それは一から一、多くの一つであり、逆の関係を生成する良い方法です。これはかなり重要です。モデル間の関係を定義すると、モデルが作成されます。
など。ユーザーモデルの新しいインスタンスを作成します。
バックボーン・リレーショナルは自動的に逆リンクを作成します(イベント・モデルには、逆リレーション・キー 'belongsToUser'(または名前を付けてください)によって定義された属性があります)。これにより、モデル/モデル階層。
リレーショナルニーズに基づいて、これは良いフィットのように思える。
あなたは多くに多くをしたい場合は、(中間モデルを使用して)それを行うのラウンドについての方法がありますが、私は見つけましたPaul-Uitholはしばらくの間、Backbone-Relationalを更新していて、新しい機能が追加され続けています。最初は学習曲線が少し難しかったですが、一度始めるとそれに慣れると、それは大変便利です。
注:強調すると、MosselmanはRequire.jsを推奨しましたが、私もこれに強く同意します。私のコードをもっと管理しやすくしました。バックボーン・リレーショナル・コードを調整してAMDに準拠させることができ、Requireで完璧に機能します。
UPDATE:バックボーン・リレーショナルは今2014年4月1日にリリース0.8.8のようrequire.jsをサポートしています - 感謝ケネス
それは、イベントモデルを介してユーザにイベントを関連付けることは可能ですか? 'myUser.set( 'events'、[myEvent1、myEvent2、myEvent3]);'それのようなもの?あるいは、関係するモデルIDを使って関係を参照する必要がありますか? –
@orangewarp backbone-relationalは、2014年4月1日にリリース0.8.8でrequire.jsをサポートします。http://backbonerelational.org/#change-logを参照してください。 – Kenneth