2013-12-17 5 views
0

У меня есть JSON-файл, который в основном выглядит следующим образом:BackboneJS - Извлечение коллекции от модели

[ 
{ 
    "First" : [...] 
}, 

{ 
    "Second" : [...] 
}, 

{ 
    "Third" : [...] 
}, 
] 

В моем маршрутизаторе я имею:

this.totalCollection = new TotalCollection(); 
this.totalView = new TotalView({el:'#subContent', collection:this.totalCollection}); 

this.totalCollection.fetch({success: function(collection) { 
    self.totalView.collection=collection; 
    self.totalView.render(); 
}}); 

Теперь у меня есть мой Backbone Модель:

define([ 
"jquery", 
"backbone" 
], 

function($, Backbone) { 
var TotalModel = Backbone.Model.extend({ 
    url: "/TotalCollection.json", 

    initialize: function(opts){ 
     this.first = new First(); 
     this.second = new Second(); 
     this.third = new Third(); 

     this.on("change", this.fetchCollections, this); 
    }, 

     fetchCollections: function(){ 
     this.first.reset(this.get("First")); 
     this.second.reset(this.get("Second")); 
     this.third.reset(this.get("Third")); 
     } 
}); 

return TotalModel; 
}); 

and my in my Backbone View Я пытаюсь представить коллекцию (ы):

render: function() { 
    $(this.el).html(this.template(this.collection.toJSON())); 
    return this; 
} 

Но я получаю сообщение об ошибке «Первый не определен» - в чем проблема?

ответ

1

Действительно ли вы определили переменную «Первая», «Вторая» и «Третья»? Основываясь на том, что вы показываете здесь, с этим именем ничего нет. Можно было бы ожидать, что Вы есть пара строк вроде ..

var First = Backbone.Collection.extend({}); 
var Second = Backbone.Collection.extend({}); 
var Third = Backbone.Collection.extend({}); 

Однако вы не предоставили ничего подобного, так что мое первое предположение, что вы просто не определили его.

Per комментарии, это может быть больше того, что вам нужно:

render: function() { 
    $(this.el).html(this.template({collection: this.collection.toJSON())}); 
    return this; 
} 

Тогда ..

{{#each collection}} 
    {{#each First}} 
     /*---*/ 
    {{/each}} 
{{/each}} 
+0

ах хорошо, вот прямо :-) Так что должно быть в модели тоже? и должно быть что-то внутри фигурных скобок {}? – SHT

+0

Ничего не должно быть действительно необходимо внутри колен, если вы не делаете что-то особенное для каждого - иначе вы могли бы так же легко сказать 'this.first = new Backbone.Collection()', и он будет работать так же хорошо. – Stephen

+0

Отлично! Теперь у меня нет ошибок. Пока все хорошо, но данных нет: я добавил свой выбор() к моему вопросу. Может быть, с этим что-то не так? – SHT

Смежные вопросы