我在我的控制器和放大器中设置了一个基于数组的Ember(2.14.2)基于数组的查询参数。路线:
// controller
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['color'],
color: [],
actions: {
setColor(color){
this.set('color', [parseInt(color.id)])
}
}
});
和
// route
import Ember from 'ember';
const {Route} = Ember;
export default Route.extend({
queryParams: {
color: {
refreshModel: true
}
},
model(params) {
return this.store.findAll('color', params);
}
});
和
{{!-- template --}}
<ul>
{{#each color as |qp|}}
<li>qp: {{qp}}</li>
{{/each}}
</ul>
<ul>
{{#each model as |model|}}
<li {{action "setColor" s}}>obj: {{model.id}}</li>
{{/each}}
</ul>
我注意到,当我第一次单击一个元素并替换查询参数数组时,URL会相应地更改为:
?color=%5B1%5D (i.e. ?color=[1])
如果我手动重新加载页面,或者如果我访问启用了此查询参数的页面,则Ember会将查询参数替换/解码为:
?color="%5B3%5D" (i.e. ?color="[1]")
如果我再次刷新页面:
?color="%5C"%5B3%5D%5C"" (i.e. ?color="\"[3]\"")
因此,当Ember正确编码URL时,它似乎没有正确解码传入的查询参数,而是将它们解释为字符串而不是数组?