无法通过queryParams

时间:2015-09-22 12:48:01

标签: ember.js

我是ember.js的新手,我正在尝试在我的应用中对产品列表进行排序。

我有一条路线catalog/category.js

import Ember from 'ember';
export default Ember.Route.extend({
  queryParams: {
    ordering: {
      refreshModel: false,
    },
  },
  model (params) {
    return Ember.RSVP.hash({
      categories: this.store.peekAll('category'),
      category: this.store.peekRecord('category', params.category_id),
    });
  }
});

和控制器catalog/category.js

import Ember from 'ember';
export default Ember.Controller.extend({
  queryParams: ['ordering'],
  ordering: null,
  sortedProducts: Ember.computed.sort('model.category.products', 'ordering'),
});

Link传递参数:

{{#link-to 'catalog.category' (query-params ordering='price')}}Price Asc{{/link-to}}

ordering参数设置为price,但不起作用。但是当我手动将ordering参数设置为['price']时 - 一切都按预期工作。

有人可以建议如何解决它吗?

1 个答案:

答案 0 :(得分:0)

  

订购参数设置为价格,但不起作用。但是当我   手动将订购参数设置为['价格'] - 一切正常   预期

string:price(由查询参数设置)和array:['price'](由您手动设置)之间存在差异。

您需要另一个属性来为您创建该数组:

import Ember from 'ember';

export default Ember.Controller.extend({
  queryParams: ['ordering'],
  ordering: null,
  orderingObserver: Ember.on('init', Ember.observer('ordering', function() {
    let ordering = this.get('ordering');
    let array = [];
    if (ordering) {
      array.push(ordering);
    }
    this.set('orderingArray', array);
  })),
  sortedProducts: Ember.computed.sort('model.category.products', 'orderingArray'),
});
  

它不应该工作"开箱即用"?

它适用于属性数组 - http://emberjs.com/api/classes/Ember.computed.html#method_sort