我是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']
时 - 一切都按预期工作。
有人可以建议如何解决它吗?
答案 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。