2012-03-07 17 views
0

明示的に初期化せずに、コレクション内のモデルを変更/更新する方法を見つけようとしています。コレクション内のモデルの変更/更新

アイデアは、オブジェクトのハッシュを渡して新しいコレクションインスタンスを作成することです。私は、Backboneが各オブジェクトのモデルインスタンスを自動的に作成すると仮定しています(私はそうですか?)。 これが正しいとすれば、私は何とかコレクションのモデルを変更/更新することができますか?そうではありませんか?

私はこれを試してみましたが、それは動作しません:

serie = view.collection.get(serie_id); 
serie.set({ 
    name: view.$('.series-name').val(),     
    format: view.$('.series-format').val(), 
    number: view.$('.series-number').val() 
}); 

答えて

0

私はあなただけのオブジェクトのいずれかのハッシュを渡すとコレクションが自動的にモデルを作成することができないと思います。モデルをインスタンス化し、モデル配列として渡す必要があります。

は、私はあなたが何を言ってるのか考えている。このかかわらような何か:あなたは、コレクションクラス上のモデル属性を指定している場合は、あなたのコレクションと、それを作成します()機能を利用することができます

ViewCollection = Backbone.Collection.extend({ 
    model: Serie 
}); 

myViewCollection = new ViewCollection(); 

// This will automatically create a Serie model instance and add it in your collection 
myViewCollection.create({ 
    name: 'something', 
    format: 'something', 
    number: 'something' 
}); 

属性のハッシュを渡すだけでモデルをインスタンス化します。

任意のデフォルト値を使用してSerieモデルを設定すると、ループを実行して空のモデルを多数作成することができます。次に、上記のコードを使用して.get(id).set()メソッドを使用してこれらの属性を変更することができます。このようにしたいと思う理由はありますか?

ほとんどの使用例では必要に応じて.create()メソッドを使用するように感じられます。

関連する問題