2011-12-20 15 views
16

私は、与えられた範囲内の各日付のモデルを返すコレクションを持っています(Railsコントローラからフィードされます)。バックボーン初心者:コレクションから最初のモデルを取得するには?

コレクションの私の見解では、コレクションの最初の日付の月を表示したいと思います。それを達成する最もエレガントな方法は何かと思います。

コレクションを介してモデルの配列にアクセスし、最初のモデルを取り込み、そのモデル内で必要なメソッドを実行して月の名前を取得するのが最も簡単なようです。単純だと思われますが、コレクション内から最初のモデルを取り出す方法を理解することはできません。

また、railからrouter()を呼び出して必要な値を渡すこともできますが、これは少し醜いようです。

最後に、私は全く新しいコレクションをちょうどにして、その1つの値を取り戻すことができました。

私はこれをどうやって行うべきかについての提案はありますか?モデルデータをコレクションに戻すのがあまりにも多くのタブーではないとすれば、私はそれをどうやって行うのかと尋ねています。

答えて

47

Backbone.jsコレクションはUnderscore.jsメソッドにアクセスできます。

MyCollection.first()は、コレクションから最初のモデルを返す必要があります。

+1

http://documentcloud.github.com/backbone/#Collection-Underscore-Methodsて、http:// documentcloud詳細については、.github.com/underscore /を参照してください。 – djlumley

+0

アンダースコアは使用していませんが、別のテンプレートエンジン(たとえば、handlebars.js)を使用している場合はどうなりますか?ネイティブのbackbone.jsメソッドまたはパターンはありますか? – lucke84

+2

@ lucke84 - 'Underscore.js'はハード依存ですので、別のテンプレートエンジン(EJS、ECO、Jadeなど)を使用していても、依然として' Underscore.js'をインクルードして使用できるはずですあなたのビュー内のメソッド(JavaScriptが評価されることを許可している場合) JavaScriptを評価できないテンプレートエンジンを使用している場合は、ビュー変数を設定するのはかなり簡単です特定のビューをレンダリングする前に – djlumley

7
collection.at(0) //etc 

しかし、あなたがあるかどうかを確認する必要がある場合は、少なくとも一つの要素

if(collection.length){ 
    collection.at(0) //etc 
}