2013-05-15 2 views
2

Я просто изо всех сил пытался использовать подчеркивание, чтобы получить базовую коллекцию.Магистраль не работает с «этим»?

var collection=Backbone.Collection.extend({ 
model:someModel, 
getModelEntry : function(id){ 
return this.get(id); 

//returns undefined 
} 
}) 

попытка 2:

var collection=Backbone.Collection.extend({ 
    model:someModel, 
    getModelEntry : function(id){ 
    var model = this.where({id:id})[0]; 
    //here I got model 
    return model.get("attr"); 
    //returns undefined 
    } 
    }); 

что случилось с использованием попасть в коллекции?

get работает отлично на примерах!

var coll=new collection; 

coll.get(id); //working fine 
+0

Ммм, это странно, я сделал быстрый jsfiddle, и она работает: [скрипку] (http://jsfiddle.net/y7gDN/) (проверьте консоль для вывода). – Ingro

+0

'coll.getModelEntry (id)' возвращает 'undefined'? Очень странно .. –

+0

проверял, что idAttribute вашей базовой модели не настроен на что-то еще, кроме id? – jbl

ответ

0

Работы прекрасно, насколько я мог видеть. Проверьте, существует ли идентификатор модели, которую вы ищете, в вашей коллекции. Добавить что-то, как показано ниже, и посмотреть, что происходит

getModelEntry : function(id){    
      var model = this.get(id); 
      if(model == undefined) { 
       console.log("id: ",id); 
       console.log("collection: ",JSON.stringify(this.models)); 
      } else { 
       console.log(model.get('name'));     
      }   
     }