我有以下从 api 获取数据的集合:
var Data = Backbone.Collection.extend({
url: '/* api url - working */',
sync: function(method, model, options) {
options.timeout = 10000;
options.dataType = "jsonp";
return Backbone.sync(method, model, options);
}
});
我想在 View 中显示它:
var MyView = Backbone.View.extend({
el : '.myview',
render : function () {
var data = new Data();
var that = this;
data.fetch({
success : function (data) {
console.log(arguments);
console.log(data);
var template = _.template( $('#temp').html(), {data: data.models} );
that.$el.html(template);
}
});
}
});
我不明白的是,当我记录arguments
时,我得到了api数据,它有一个wieired结构:{0:child, 1:object\*包含api data *\, 2:object}
但当我记录 data
时,我只得到 child
我不明白这个结构,我错过了什么以及如何从中获取 api 数据?
最佳答案
Collection.fetch
正在调用您传入的带有 3 个参数的 success 函数(来自 Backbone source ):
success(collection, resp, options);
arguments
是所有 javascript 函数中的特殊局部变量。看看这个documentation .
所以,记录arguments
显示了传递到 success
的 3 件事记录时的功能data
仅显示传入的第一个内容。即使您的函数只有 1 个参数,但仍然传递了三个内容。
第一件事传递给success
是 Backbone Collection 本身。因此,您需要用它做什么取决于您的模板的外观。通常只将 JSON 传递给模板函数: _.template( $('#temp').html(), {data: data.toJSON()} )
。然后在模板中,您需要迭代这些 JSON 对象。
<% _.each(data, function(item){ %>
<div><%= item.foo %></div>
<% }); %>
关于api - 如何从集合中获取api返回的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15410964/