javascript – EmberJS:对象作为刷新模型的查询参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – EmberJS:对象作为刷新模型的查询参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1819字,纯文字阅读大概需要3分钟。
内容图文
![javascript – EmberJS:对象作为刷新模型的查询参数](/upload/InfoBanner/zyjiaocheng/809/4ecdc33ba0334e06a66fcc1e6cd132ef.jpg)
我按照查询参数指南(http://guides.emberjs.com/v1.11.0/routing/query-params/)进行了操作,效果很好.具体来说,刷新模型完全符合我的要求.
我正在将过滤器移动到json-api规范,过滤发生在过滤器对象中.所以而不是:
http://localhost:3000/accounts?id=1
服务器响应:
http://localhost:3000/accounts?filter[id]=1
我试图让查询参数基于对象刷新模型,但它似乎没有更新.
// app/controllers/accounts/index.js
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['filter', 'sort'],
filter: {},
sort: '-id'
});
// app/routes/accounts/index.js
import Ember from 'ember';
export default Ember.Route.extend({
queryParams: {
filter: { refreshModel: true },
sort: { refreshModel: true }
},
model: function(params) {
return this.store.find('account', params);
},
});
// template
<th>{{input type="text" placeholder="ID" value=filter.id}}</th>
查询参数是否可以与对象一起使用?
解决方法:
这个答案是Ember版本1.13.0-beta.1金丝雀.
简短回答:否.查询参数不适用于对象.
答案很长:
截至目前,路由器中名为_serializeQueryParams的私有函数序列化queryParams.
_serializeQueryParams(targetRouteName, queryParams) {
var groupedByUrlKey = {};
forEachQueryParam(this, targetRouteName, queryParams, function(key, value, qp) {
var urlKey = qp.urlKey;
if (!groupedByUrlKey[urlKey]) {
groupedByUrlKey[urlKey] = [];
}
groupedByUrlKey[urlKey].push({
qp: qp,
value: value
});
delete queryParams[key];
});
for (var key in groupedByUrlKey) {
var qps = groupedByUrlKey[key];
var qp = qps[0].qp;
queryParams[qp.urlKey] = qp.route.serializeQueryParam(qps[0].value, qp.urlKey, qp.type);
}
},
qp.urlKey将在您的示例中评估为’filter’,并且对象将被序列化为’object [Object]’.即使您可以覆盖路由中的serializeQueryParam方法,这也无济于事,因为queryParam键仍然是“过滤器”,并且您需要它是’filter [id]’
基于this comment in the Ember Discussion Forum,它听起来像对象查询参数不太可能,你最好只是扁平化和取消过滤字段.
内容总结
以上是互联网集市为您收集整理的javascript – EmberJS:对象作为刷新模型的查询参数全部内容,希望文章能够帮你解决javascript – EmberJS:对象作为刷新模型的查询参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。