gpt4 book ai didi

javascript - Backbone - 通过 Controller 中的一次获取调用填充多个模型

转载 作者:行者123 更新时间:2023-12-02 17:11:42 40 4
gpt4 key购买 nike

假设我有一个需要填充的集合(例如搜索结果)和一个需要获取当前页面、总页数等值的分页模型。在我的 Controller 中,我进行 GET 调用到返回两者搜索结果和分页信息的 API。那么,我如何获取所有这些信息并将其解析为一个集合和一个单独的模型?这可能吗?

我正在使用 AirBNB 的 Rendr,它允许您使用统一的代码库在服务器和客户端上运行 Backbone。 Rendr 迫使我将 API 响应解析为模型数组,从而使我无法访问分页信息。

在 Rendr 中,我的 Controller 将如下所示:

module.exports = {
index: function (params, callback) {
var spec = {
pagination: { model: 'Pagination', params: params },
collection: { collection: 'SearchResults', params: params }
};
this.app.fetch(spec, function (err, result) {
callback(err, result);
});
}
}

如果这还不够清楚,我深表歉意。欢迎询问更多信息!

最佳答案

这是非常古老的,所以你现在可能已经弄清楚了(或者放弃了它)。这与 Rendr 问题一样都是一个核心问题,因为 API 响应是非标准的。

Backbone 建议,如果您有非标准 API 响应,则需要重写解析方法以获取确切的数据格式。

如果你真的想分解它,你可能想要的编码方式是:

  • 分页模型
  • 搜索结果集合
  • 搜索结果模型
  • 最重要的是具有自定义解析功能的搜索模型

Controller :

index: function (params, callback) {
var spec = {
model: { model: 'Search', params: params }
};
this.app.fetch(spec, function (err, result) {
callback(err, result);
});
}

搜索模型

var Base = require('./base'),
_ = require('underscore');

module.exports = Base.extend({
url: '/api/search',
parse: function(data) {
if (_.isObject(data.paginationInfo)) {
data.paginationInfo = this.app.modelUtils.getModel('PaginationInfo', data.paginationInfo, {
app: this.app
});
}
if (_.isArray(data.results)) {
data.results = this.app.modelUtils.getCollection('SearchResults', data.results, {
app: this.app,
params: {
searchQuery: data.searchQuery // replace with real parameters for client-side caching.
}
});
}
return data;
}
});
module.exports.id = 'Search';

关于javascript - Backbone - 通过 Controller 中的一次获取调用填充多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770098/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com