Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从集合中获取api返回的数据?_Api_Backbone.js_Collections_Model - Fatal编程技术网

如何从集合中获取api返回的数据?

如何从集合中获取api返回的数据?,api,backbone.js,collections,model,Api,Backbone.js,Collections,Model,我有以下从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

我有以下从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);
    }
});
我想在视图中显示它:

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);
            }
        });
    }
});
我不明白的是,当我记录
参数时,我得到api数据,它有一个wieired结构:
{0:child,1:object\*包含api数据*\,2:object}
但是当我记录
数据时,我只得到
子对象


我不理解此结构,我缺少什么,以及如何从中获取api数据?

集合。fetch
正在调用您用3个参数传入的success函数(来自):

参数
是所有javascript函数中的一个特殊局部变量。看看这个

因此,记录
参数
显示传递到
success
函数的3个内容,而记录
数据
只显示传递的第一个内容。尽管您的函数只有一个参数,但仍向其传递了三个参数

传递给
success
的第一件事是主干集合本身。因此,您需要如何处理它取决于模板的外观。通常只将JSON传递给模板函数:
.template($('#temp').html(),{data:data.toJSON()})
。然后在模板中,需要迭代这些JSON对象

 <% _.each(data, function(item){ %>
     <div><%= item.foo %></div>
 <% }); %>


我的困惑是,为什么我从api收到的实际数据是第二个参数,而不是第一个参数?什么是名为子对象的对象?从您的解释来看,我似乎正确地使用了视图和集合。第二个参数是传递给其
success
回调函数(Backbone.sync中定义的函数,而不是您的函数)的
ajax
。通常,您不需要使用它,因为集合(第一个参数)已经用该数据重置了。可以尝试
console.log(data.toJSON())
在您的
success
函数中,这可能会帮助您更好地理解它。这应该打印出一个包含每个模型属性的JSON数组。在第一个参数中,我没有得到ajax数据,只有在第二个参数中,集合中没有ajax数据,这是不是出了什么问题打印?第一个参数不是ajax数据,而是将ajax数据解析为的实例。
 <% _.each(data, function(item){ %>
     <div><%= item.foo %></div>
 <% }); %>