我對Backbone.js非常陌生,至今仍然喜歡它,但我在嘗試獲取關係數據進行呈現時遇到了一些問題。Backbone視圖呈現中的getJSON問題
在我的骨幹視圖(稱爲ImagesView)我有以下代碼:
// 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進行模板化