使用ember中的参数过滤数据

时间:2017-02-02 21:23:43

标签: ember.js

我正在开发我的应用中的搜索功能。我要做的是按品牌过滤汽车。我的路线中有以下内容:

import Ember from 'ember';

export default Ember.Route.extend({
    actions: {
        filterCars(car){
            this.transitionTo('cars',{ queryParams: {brand: car}});
        }
    },
  queryParams: {
    brand: {
      refreshModel: true
    }
  },
    model(params) {
        if(params['marca'] != null){
            this.get('store').query('car', { filter: { brand: params['marca'] } }).then(function(cars) {
              return cars;
            });
        } else {
            return this.get('store').findAll('car');
        }
    }
});

当我从params获得该品牌时,我只过滤了具有该品牌的汽车。我认为它会起作用,但它不起作用。我知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

问题的症状是什么?

我注意到你的model钩子有一个带有两个分支的if语句,但只有一个(else分支)导致函数返回一个值。 if分支解决了一个承诺,但没有做任何事情。

另外:您为汽车路线显示的代码是什么?您可以通过更改brand参数来简化此页面。我不确定你是否需要转换到相同的路线。

答案 1 :(得分:0)

在过滤器中使用where子句


    import Ember from 'ember';
    export default Ember.Route.extend({
        actions: {
            filterCars(car){
                this.transitionTo('cars',{ queryParams: {brand: car}});
            }
        },
        queryParams:{
            brand:{
                refreshModel: true
            }
        },
        model(params) {
            if(params['marca'] != null){
                this.get('store').query('car', { filter: { where:{brand: params['marca'] } }}).then(function(cars) {
                  return cars;
                });
            } else {
                return this.get('store').findAll('car');
            }
        }
    });