2011-10-20 6 views
3

私はサーバーコールを介してコレクションに追加される一連のモデルを持っています。私のすべてのモデルが追加され、コレクションに含まれるようになっています。今私はコレクションを検索し、モデル内の指定されたid属性に基づいてモデルを返す方法が必要です。私はidに組み込まれているコレクションについて話しているわけではありません。コレクションの各モデルの一部であるカスタムIDを参照しています。コレクションのモデルを見つける

私はこれを持っています。私の_detect関数は私の後ろのものを返さない。

var collection = Backbone.Collection.extend({ 


     initialize: function() { 
      _.bindAll(this); 
      this.bind('add', this.modelIsAddedd); 
      this.serverCall(); 
     }, 

     modelIsAddedd: function(model){ 
      console.log('model = ', model); 
     }, 

     getModelByCustomID: function(id){ 

      var model = this.detect(id, function(model){ return model }); 

     }, 

     serverCall: function(){ 

      $.ajax({ 
       my ajax call with success and error 

      }); 
     }, 

     onSuccess: function(response){ 
      this.add(response.data); 
     } 

    }); 

}); 
+0

このカスタムIDは、システム内のすべてのモデルで一意ですか? 'idAttribute'を使ってモデルの' id'にすることができますか? –

+0

はいcustomIDはコレクション内の各モデルに固有です。 – Chapsterj

答えて

3

誰かが答えを必要とする場合に備えて、それを理解しました。

getModelByCustomID: function(id){ 

     var model = this.detect(function(model){ 
      return model.get('customIDName') == id; 
     }); 

}, 
+6

あなたが探しているものはそのまま利用可能です:モデルの 'idAttribute'プロパティを' 'customIDName''に設定すると、' myModel.id'の便利さを 'myModel .get( 'customIDName') 'では、ハッシュベースの超高速[' Collection.get(id) 'メソッド](http://documentcloud.github.com/backbone/#Collection)を使用することもできます--get)(あなたがここで再発明したもの)。 –

+0

私はあなたがmodel.idAttribute = "customID"を設定できるかどうかわかりませんでした – Chapsterj

+0

GENIUS!これでちょうど無駄な時間。ドキュメントを読んでください! – simonmorley

関連する問題