gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:39:23 24 4
gpt4 key购买 nike

使用 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/

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