ember.js - 通过链接查询异步 hasMany 中的参数

标签 ember.js ember-data

使用 Ember Data,您可以执行以下操作:

App.Post = DS.Model.extend({
   comments: DS.hasMany('comment', {async:true})
});

使用从服务器返回的links对象或在客户端序列化有效负载,如下所示:

{
  post:{
    id: 1,
    links: {
      comments: 'comments'
    }
  }
}

当您执行 post.get('comments')

时,Ember Data 会生成以下网址 /post/:post_id/comments

但是我收到了很多评论,我想将查询参数传递给它(就像 ember 数据中的正常搜索一样): post.get('comments',{ from: '2014-01 -01', 至:'2014-01-07' });

不幸的是,它不起作用。还有别的办法吗?

另请参阅我的其他 question

最佳答案

有很多方法可以实现这一点,我将把它们全部列出来,然后也许决定哪一个似乎是最好的,

更改从服务器返回的json(可能是最正确的)

{
  post:{
    id: 1,
    links: {
      comments: 'comments?from=foo&to=bar'
    }
  }
}

示例:http://emberjs.jsbin.com/OxIDiVU/155/edit

收到后在序列化器中修改json

App.ColorSerializer = DS.RESTSerializer.extend({
  extractArray: function(store, type, payload) {
    console.log(payload);
    payload.colors.forEach(function(color){
      color.links.items += "?foo=bar";
    });
    return this._super(store, type, payload);     
  }
});

示例:http://emberjs.jsbin.com/OxIDiVU/156/edit

修改适配器中的请求以在某些情况下包含额外信息

App.ColorAdapter= DS.RESTAdapter.extend({
    findHasMany: function(store, record, url) {
    var host = Em.get(this, 'host'),
        id   = Em.get(record, 'id'),
        type = record.constructor.typeKey;

    if (host && url.charAt(0) === '/' && url.charAt(1) !== '/') {
      url = host + url;
    }
    // check if post comments
    var builtUrl = this.buildURL(type, id),
        withPrefix = this.urlPrefix(url, builtUrl),
        data = {from:'foo'};
      return this.ajax(withPrefix, 'GET',{data:data});
  },
});

示例:http://emberjs.jsbin.com/OxIDiVU/154/edit

关于ember.js - 通过链接查询异步 hasMany 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21236169/

相关文章:

ajax - 我在哪里可以在 Ember 中放置全局 ajax 错误处理?

javascript - Ember 数据 EmbeddedRecordMixin

ember.js - 如何从 emberjs 中的操作返回值

ember.js - Ember 无法将路由操作传递给组件

ember.js - Ember Route.transitionTo 移除

ember.js - 如何使用 FIXTURES 模拟缓慢的 REST 后端?

ember.js - Ember 表与 Ember 模型/Ember 数据集成

javascript - 输入大小的 Ember 全局变量

javascript - 不能在空的 hasMany 关系上使用 {{#for}} 助手

javascript - Ember 数据映射