基于数组的查询参数

时间:2017-08-17 08:52:23

标签: ember.js

我在我的控制器和放大器中设置了一个基于数组的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时,它似乎没有正确解码传入的查询参数,而是将它们解释为字符串而不是数组?

0 个答案:

没有答案