backbone.js - 获取额外数据和请求

Mat*_*hew 18 javascript ajax jquery backbone.js underscore.js

我有一个容纳一些用户的集合.需要的一些信息是总数,页数等等.如何将这些信息传递回客户端?或者他们必须来自一个单独的视图,在这种情况下,我将需要多个ajax调用?我想收集这些收藏品fetch()并收到一些"元数据".处理这个问题的好方法是什么?

Bil*_*uer 35

通常,您需要在集合类的parse方法中处理此问题.它的职责是获取响应并返回一组模型属性.但是,如果您不希望解析方法承担此额外责任,您可以做更多的事情.

UserList = Backbone.Collection.extend({

    model: User,

    url: '/users',

    parse: function(data) {
        if (!data) {
            this.registered_users = 0;
            return [];
        }
        this.registered_users = data.registered_users;
        var users = _(data.users).map(
            function(user_data) {
                var user = {};
                user['name'] = user_data.name;
                return user;
            }
        );
        return users;
    }
});
Run Code Online (Sandbox Code Playgroud)

因此,在上面的简单示例中,假设服务器返回一个响应,其中包含已注册用户的数量和一组用户属性.您既可以解析并返回用户属性,也可以选择已注册的用户数,并将其设置为模型上的变量.
parse方法将作为fetch的一部分进行调用.所以不需要修改fetch,只需使用你拥有的内置钩子方法.

纯粹主义者会说你给解析方法一个次要的责任,可能会让一些人感到惊讶(例如,返回一些东西并修改模型状态).但是,我认为这没关系.