数据:将服务器查询添加到AJAX请求
我在使用Ember-Data的特定情况下遇到问题。
通常Ember期望模型类,路由,ajax请求和返回的JSON都遵循类似的模式。
RESTAdapter尝试自动构建一个URL发送到服务器,这在某些情况下可以使用,但我需要完全控制一些请求URL,特别是在附加其他参数时,或者将API匹配到具有一个完全不同的URL结构。
可悲的是,没有任何指导,虽然我找到了关于buildURL method
一些东西
我不太习惯通过源代码来找出隐藏的内容,尽管我不想为了修复一些用例而破坏余烬数据。
api/rest
view-debtors
debtor/list
?page_size=10&page_number=1
。 我完全失去了如何做到这一点。 我无法更改API结构......取决于它们的服务太多了。
一些小的进展
我继续前进,并利用我目前的知识更接近解决方案。
RESTAdapter
扩展为“list”以将名称空间更改为“api / rest / RESTAdapter
” store.find('list')
”路径的模型钩子更改为store.find('list')
现在的结果是,AJAX调用几乎是正确的......我只需要将这些额外的参数添加到服务器查询。
这是我现在的立场......我可以通过模型钩添加这些服务器查询吗? 或者更好,但我也可以通过ember操作来控制服务器查询以获取新的AJAX请求?
稍微退一步。 我的方法到目前为止是一种好的做法吗? 因为我正在使用路由的模型钩子,所以要将模型设置为列表,只有在直接输入路由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的所有完整功能来使用Ember-Data这个特定的数据列表,那么您将会左右侵入终点。 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文档
链接地址: http://www.djcxy.com/p/90959.html