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

标签 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, 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/

相关文章:

javascript - 使用 casperJS 测试 jQuery Geocomplete 插件(自动完成)

javascript - 'el' 在 vi​​ew.render().el 中做了什么?

objective-c - NSMutableSet 的 addObject 方法是否替换重复或忽略插入?

c# - 存储父子关系

java - 使用 Integer 作为 Key 和 ArrayList 对 hashmap 进行排序

c# - 如何获取绘图板笔压力值?

php - 获取没有显示名称的 youtube channel ID

facebook - 将自定义 css 文件添加到 Facebook "Activity Feed"

api - 用于测试 API 的 cURL 的 GUI 前端

javascript - 未捕获的类型错误 : Cannot read property 'app' of undefined