2012-02-14 11 views
1

私はちょうどバックボーンの使用を開始しました。私はアプリケーションを構造化する良い方法を手に入れようとしています。リストのリストの素敵なBackbone.js表現

私たちは本質的に取引プラットフォームであるウェブアプリケーションを持っています。 ASCIIアート、インターフェース(およびデータ)では、次のようになります。

各契約は、市場の子であり、かつ各契約の隣に2個のセルが現在の売買価格であり、「数量
Market name 

------------------------------------ 
Contract 1 | 12/$100 | 15/$150 | 
------------------------------------ 
Contract 2 | 40/$400 | 42/$650 | 
------------------------------------ 
Contract 3 | 46/$620 | 47/$700 | 
------------------------------------ 

"(利用可能な金額)。 1ページに1つ以上のマーケットが存在する可能性があります。異なるテンプレート(契約書全体のリストの代わりに1つの「好きな」引用のみを含むリストビューなど)になる可能性があります。

私たちは使用していませんこのものはフロントエンドでは読み取り専用で、初期のペイロードはHTML経由で、残りはWebSocketでルーティングされるため、ルーティングが必要です。

インターフェイスは非常に可変です。たとえば、そこにある2つのセル(BUY/SELL)は任意の深度にすることができます。つまり、各面に3ティックを表示できます。または、片側のみを表示することもできます(利用可能な購入見積もり)。

私が現在持っているものは、マーケット、契約、および見積もりの​​バックボーンモデルです。次に、私は契約のリストのMarketContractsコレクションと、買い/売りリストのためのMarketDepthQuoteCollection(単一のリストとして折りたたまれている)を持っています。

市場>契約>見積階層は、データがAPIで表される方法と強く結びついているため、それは交渉できません。これはバイナリ形式を用いることなく、書き込みを介してデータを表現するための最もコンパクトな方法であるよう

{marketid: [{contractid: [[buy quotes], [sell quotes]]}],...} 

:のようなJSON構造を含むWebSocketをメッセージとしてインターフェースランドに

アップデート。

これを構造化し、すべてのリスナーをきちんと結び付ける良い方法はありますか?理想的には、市場モデルの変更が自分自身で更新されるのを待っているContracts and Quotesが必要なので、Websocketからの状態変更をテーブルの各見積もりに簡単に渡す必要があります。

私の人生を楽にするために、Viewsがこれに収まる場所についても混乱します。

良いアプリやアドバイスはありますか?私は情報を見つけるのに苦労してきました。

編集:ここで私が話しているインタフェースのscreengrabです。それは1つの市場全体と第二市場の一部を示しています

だから、

Market interface with quotes

+0

は3と3に対しての最大はありますか? –

+0

現時点ではyesですが、両面に一重引用符を使用した代替インターフェイスがあり、これから任意の数のインターフェイスを想像することができます。だからこそ私はそれを一般的な方法で正面から適切にやりたいのです。 –

答えて

3

、あなたは市場のコレクションを持っています。それぞれには契約の集まりがあります。それぞれには引用符のコレクション(または2つ)が付いています。これはかなり論理的なようです。あなたはBackbone-relationalを使って調べることができます。

かなり細かいビューを使用することをお勧めします。マーケットには一連の契約が含まれているため、MarketViewはContractViewのコレクションを作成/表示します。各ContractViewはQuoteViewのコレクションを作成/表示します。

このように、QuoteModelが変更されると、その変更イベントをリスンするQuoteViewだけを更新する必要があります。

あなたのデータをあなたのモデルにどのようにして取得するには、あなたのデータがwebsocket(および大きなチャンク)を介して定期的に送られるため、解析するためにアダプタが必要になることがあります。通常は、新しいデータが必要な場合にのみ、モデルまたはコレクションのフェッチテンプレートメソッドを呼び出します。しかし、set()またはreset()を使用して新しいデータをモデル属性に渡す限り、リッスンするビューは更新されます。ここで

は、いくつかの良いリンクです:

http://aaronhardy.com/javascript/javascript-architecture-backbone-js-views/ https://github.com/addyosmani/backbone-fundamentals

+0

私は今、バックボーンで遊ぶのにしばらくありました。あなたが提案したものの大部分を行いました。これはうまくいきます。私が違うのは、JSONの抽象概念を契約モデルの属性にすることだけでした。変更すると、私は "変更:引用"を聞いて反応することができます。うまくいく! –

関連する問題