Я довольно новичок в Backbone.js, любя его до сих пор, но у меня есть небольшая проблема с попыткой получить реляционные данные для рендеринга.Проблема с getJSON в рендеринге Backbone view
В моем взгляде Backbone (называется) Я изображения Представления иметь следующий код:
// Render it
render: function() {
var self = this;
// Empty the container first
self.$el.html("")
// Loop through images
self.collection.each(function(img){
// convert `img` to a JSON object
img = img.toJSON()
// Append each one
self.$el.append(self.template(img))
}, self)
}
Есть 3 изображения в коллекции, и они правильно шаблонные с указанным кодом. Внутри объекта img
есть атрибут user
, содержащий идентификатор пользователя. Я пытаюсь вернуть данные пользователя и использовать их внутри шаблона вместо ID. Я делаю, что, используя этот код:
// Render it
render: function() {
var self = this;
// Empty the container first
self.$el.html("")
// Loop through images
self.collection.each(function(img){
// convert `img` to a JSON object
img = img.toJSON()
/* New code START */
// Each img has a `user` attribute containing the userID
// We'll use this to get their details
$.getJSON('/user/' + img.user, {}, function(json, textStatus) {
img.photographer = {
id: json.id,
username: json.username,
real_name: json.real_name
}
/* Moved 1 level deeper */
// Append each one
self.$el.append(self.template(img))
});
/* New code END */
}, self)
}
Когда я делаю это, подробности пользователя возвращаются правильно и вставлены в шаблон, но теперь я получаю 3 каждое изображение возвращается вместо 1 (т.е. 9 в всего), в совершенно случайном порядке. Что я делаю не так? Я открыт для использования методов Backbone вместо getJSON, если это упростит, я просто не мог заставить его работать самостоятельно. Я использую underscore.js для шаблонов