Gra*_*pho 3 ember.js ember-data
我在使用Ember-Data的特定案例时遇到问题.
通常,Ember期望模型类,路径,ajax请求和返回的JSON都遵循类似的模式.
RESTAdapter尝试自动构建一个URL以发送到服务器,这在某些情况下是可以的,但是我需要完全控制我的一些请求URL,特别是在添加其他参数或将API与路由匹配时一个完全不同的URL结构.
可悲的是,Ember没有这方面的指南,尽管我确实找到了关于这个的东西 buildURL method
虽然我不想破坏ember数据只是为了修复一些用例,但我对源代码的根本不足以找出底层发生了什么.
api/restview-debtorsdebtor/list?page_size=10&page_number=1.我完全迷失了怎么做.我无法改变API结构......根据它们的服务太多了.
一些小进展
我继续使用我目前的知识来更接近解决方案.
RESTAdapter为"list"将命名空间更改为"api/rest/debtor"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});
Run Code Online (Sandbox Code Playgroud)
就个人而言,我认为嘲弄模型名称和命名空间使其适合你的后端网址结构有点蠢.这实际上取决于你想要做什么.如果你想要使用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
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |