假设我有一个名为index的 Backbone 路由,它从服务器获取一个集合:
var characters = new App.Collections.Characters();
characters.fetch({
success: function(data) {
var homeView = new App.Views.Home({
collection: new Backbone.Collection(data)
});
$('#content').html(homeView.render().el);
}
});
很简单吧?获取成功后,创建一个新视图并使用从服务器检索到的数据填充它。
这假设我只传递一个字符数组。在 Express 3.0 中:
res.send(characters.slice(counter, counter+2)); // array of 2 characters
现在,如果我要在这两个字符之外包含一个随机数,而是传递一个对象:
res.send({ nonce: randomString, characters: characters.slice(counter, counter+2);
当我这样做时,我无法再访问字符和随机数:
// the same fetch function from above
success: function(data) {
console.log(data.nonce); // undefined
console.log(data.characters); // undefined
}
Backbone Collection 是否在幕后做了一些阴暗的事情?为什么我不能从服务器传递的collection fetch的成功对象中访问我的对象属性?
更新:
这是我在第一种情况下向我的集合发送一个简单数组时的控制台输出:
当我按照@matt2000 的建议发送数据然后在 Backbone 中将其调用为data.models[0].attributes.characters;
: