小编典典

骨架.js-与请求一起获得额外的数据

ajax

我有一个收藏,其中包含一些用户。需要的一些信息是总数,页数等。如何将这些信息传递回客户端?还是它们必须来自一个单独的视图,在这种情况下,我将需要多个ajax调用?我想拥有该集合,fetch()并且还接收一些“元数据”。什么是处理此问题的好方法?


阅读 215

收藏
2020-07-26

共1个答案

小编典典

通常,您需要在集合类的parse方法中进行处理。它的职责是获取响应并返回一系列模型属性。但是,如果您不希望使用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;
    }
});

因此,在上述琐碎的示例中,假定服务器返回一个响应,其中包含注册用户的数量和用户属性的数组。您将解析并返回用户属性,然后选择已注册的用户数并将其设置为模型上的变量。
解析方法将作为获取的一部分被调用。因此,无需修改获取,只需使用您拥有的内置钩子方法即可。

纯粹主义者会说,您给parse方法赋予了第二种责任,这可能会使某些人感到惊讶(例如,返回某些东西并修改模型状态)。但是,我认为这还可以。

2020-07-26