gpt4 book ai didi

ember.js - Ember-Data:将服务器查询添加到 AJAX 请求

转载 作者:行者123 更新时间:2023-12-01 10:47:05 26 4
gpt4 key购买 nike

我在使用 Ember-Data 的特定案例中遇到问题。

通常,Ember 期望模型类、路由、ajax 请求和返回的 JSON 都遵循类似的模式。

RESTAdapter 尝试自动构建一个 URL 以发送到服务器,这在某些情况下是可以的,但我需要完全控制我的一些请求 URL,特别是在附加额外参数或将 API 匹配到具有完全不同的 URL 结构的路由。

遗憾的是,Ember 没有这方面的指南,尽管我确实找到了一些关于 buildURL method 的信息

虽然我不想为了修复一些用例而破坏 ember 数据,但我不太愿意深入了解源代码以找出幕后发生的事情。

  • 我已将 RESTAdapter 的命名空间设置为 api/rest
  • 我要填充的模型和资源是view-debtors
  • 我想联系的具体服务在debtor/list
  • 例如,我还需要为分页 ?page_size=10&page_number=1 传递额外参数。

我完全不知道该怎么做。我无法更改 API 结构...依赖于它们的服务太多。


一些小进步

我继续使用我目前的知识来更接近解决方案。

  • 我创建了一个模型并将其命名为“列表”
  • 我为“list”扩展了 RESTAdapter 以将命名空间更改为“api/rest/debtor”
  • 我将“view-debtors”路由的模型 Hook 更改为 store.find('list')

现在的结果是 AJAX 调用几乎是正确的...我只需要将那些额外的参数添加到服务器查询中即可。

这就是我现在所处的位置...我可以通过模型 Hook 添加那些服务器查询吗?或者更好的是,我可以通过 ember 操作控制服务器查询以获得新的 AJAX 请求吗?

退后一步。到目前为止,我的方法是一个好习惯吗?因为我正在使用路由的模型 Hook 来将模型设置为列表,这是否仅在直接输入路由 URL 时才有效?

问题太多:p

最佳答案

您可以通过查询查找,它将使用提供的对象将查询字符串附加到请求的末尾。

// this would produce /api/rest/debtor/lists?page_size=1&page_number=10
this.store.find('list', {page_size:1, page_number:10});

我个人认为篡改模型名称和命名空间以使其符合您后端的 url 结构有点不合常理。这真的取决于你想做什么。如果你想要使用 Ember-Data 的 CRUD 的所有完整功能来处理这个特定的数据列表,你将左右破解端点。 Ember Data 是否真的能帮助你是值得怀疑的。如果您只是读取数据,我会完全使用 jquery 获取数据并将其侧载到 Ember Data。

var store = this.store;
$.getJSON('/api/rest/debtor/lists?page_size=1&page_number=10').then(function(json){
//fix payload up if necessary http://emberjs.com/api/data/classes/DS.Store.html#method_pushPayload
store.pushPayload('type', json);
}).then(function(){
return store.all('type'); // or store.filter('type') if you want to filter what is returned to the model hook
});

pushPayload docs

关于ember.js - Ember-Data:将服务器查询添加到 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24944246/

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