数据:将服务器查询添加到AJAX请求

我在使用Ember-Data的特定情况下遇到问题。

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

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

可悲的是,没有任何指导,虽然我找到了关于buildURL method一些东西

我不太习惯通过源代码来找出隐藏的内容,尽管我不想为了修复一些用例而破坏余烬数据。

  • 我已将RESTAdapter的名称空间设置为api/rest
  • 我想填充的模型和资源是view-debtors
  • 我想要达到的具体服务是debtor/list
  • 例如,我还需要传递额外的分页参数?page_size=10&page_number=1
  • 我完全失去了如何做到这一点。 我无法更改API结构......取决于它们的服务太多了。


    一些小的进展

    我继续前进,并利用我目前的知识更接近解决方案。

  • 我创建了一个模型并将其称为“列表”
  • 我将RESTAdapter扩展为“list”以将名称空间更改为“api / rest / RESTAdapter
  • 我将“view- 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

    上一篇: Data: Adding Server Queries to AJAX Requests

    下一篇: Custom request urls in Ember model