根本的な異なる同期メソッドで再利用できるネストされたbackbone.jsモデルを構築する方法

StackOverflow https://stackoverflow.com/questions/7303663

質問

ユーザーに2つの異なるビューを提示するJavaScriptの重いアプリを構築しています。 1つのビューは私自身のアプリのWebインターフェイスを使用するため、Restful APIを使用して接続できます。もう1つはOpenSocial Gadgetにあります(したがって、OpenSocial APIを使用してデータを取得および取得します)。

私がこれまでに行ったことは、WebインターフェイスとOpensocial Gadgetの両方で再利用できるモデル/ビューの共通セットを持ち、Mixinを使用してOpensocial Gadgetの同期メソッドを置き換えることです。

例えば。

MyBaseModel = Backbone.Model.extend({
    ... typical backbone model
});

MyOpenSocialMixin = {
    sync: function(...) {
        // Sync via opensocial here
    }
};

myOpenSocialModel = MyBaseModel.extend(MyOpenSocialMixin);
myOpenSocialModel.sync(); // works on opensocial

myAppModel = new MyBaseModel();
myAppModel.sync(); // works on the normal interface

これは単一のモデルに最適ですが、ネストされたモデルでは機能しません(たとえば、MyBaseModelに多数のMySubModelが含まれている場合)。この状況に対処するためのベストプラクティスは何ですか?私のネストされたモデルは、親のsync()メソッドを継承する必要がありますか?より良いデザインパターンはありますか?

役に立ちましたか?

解決

子供のクラスのコンストラクターでは、親の同期法に合格することは確かに可能です。メソッドが解除されていない場合は、Backboneが行うのと同じように、子クラスにコピーするだけです。

def initialize(attributes, options) {
    _.extend(this, {sync: options.parent.sync});
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top