2012-04-13 16 views
2

RequireJSとBackboneJSを使用してWebアプリケーションを構築する際に、問題の「ベストプラクティス」ソリューションを見つけようとしています。RequireJSを使用した永続的/アクセス可能なBackboneJSモデル

私のアプリは、そのデータの大半をサービスでスクラブしてから、そのデータを解析する必要があります。

明らかに、私のモデルがデータを取得して(複数のサブモデルに)解析することを望んでいますが、私のモデルが永続的なままにする方法はちょっとわかりません。 BackboneJSは、モデルをビューでオンザフライでインスタンス化する必要があるように感じますが、それは私のシナリオでは機能しません。

さらに、RequireJSはすべてをグローバル名前空間外のモジュールに分離するので、永続モデルを自分のビューで使用できるようにする方法に苦労しています。もしそうなら、RequireJS付きの循環依存問題を避ける方法に関する提案はありますか?

答えて

1

私の解決策は、require.jsを使って他のすべてのモジュールに渡す単純なオブジェクトを作成するモジュールを作成することです。

たとえば、yourobject.jsを作成してすべてのモジュールに組み込みます。 yourobject.jsの中で、オブジェクトを作成して返すだけです。

# coffeescript 
define [],() -> 
    YourObj = 
    # you can put all kinds of things in here or just leave it empty 
    init: -> 
     # i usually put my app init/backbone bootstrapping code 
     # here then call it in the app module 

    # and return it 
    YourObj 

他のモジュールにこのモジュールを含めて、YourObjをグローバルオブジェクト(あたかも意味)として使用することができます。インスタンス化されたバックボーンビューをそのインスタンスに保存し、将来の操作のためのバックボーンルーター...あなたが好きなものを保存することができます。

RequireJSちょうどあなたのコードの上に素敵な傘を提供するものとしてRequireJS考えるグローバル名前空間

外のモジュールにすべてを隔離します。 RequireJSにはグローバルな名前空間汚染はありませんが、そうであればグローバルのようにオブジェクトの周りを回ることはありません。これで少しクリアされることを願っています!

1

あなたはビューの外に、あなたの長寿命モデルを作成し、それらを渡すことができます:あなたはビューを取り除く

var view = new MyView({model: theModelInstance}); 

は、あなたがいるからビューを防ぐことができるすべてのイベントを外しために覚えておく必要がありますガベージコレクション。

関連する問題