在路由器中过滤ember模型

时间:2015-03-11 01:31:52

标签: ember.js filter model store

我试图将模型商店返回到我的模板中,但在我返回之前,我希望按某个属性进行过滤,只返回那些具有该属性的记录。此外,在我的模型中,我覆盖了默认的“ID”。用序列化器。

在我的控制台中,我没有定义"商店未定义ReferenceError:商店未定义"有什么想法吗?

这是我的路线:

import Ember from 'ember';
import DS from 'ember-data';

export default Ember.Route.extend({

    model: function() {

    return this.store.find('link').then(function(links) {
        return store.filter('link', { linkTypeCode: 'NSL' });

    });

    }

});

型号:

import DS from 'ember-data';

export default DS.Model.extend({
    artifactId : DS.attr('number'),
    artifactName : DS.attr('string'),
    linkTypeCode : DS.attr('string')
});

1 个答案:

答案 0 :(得分:8)

您的路线正在拨打store而不是this.store。由于这是在异步回调中,this.store也需要缓存到变量。

此外,一旦您解决了这个问题,您的过滤器就会遇到错误。过滤器需要一个函数。

import Ember from 'ember';
import DS from 'ember-data';

export default Ember.Route.extend({

  model: function() {
    var Store = this.store;

    return Store.find('link').then(function(links) {
      return Store.filter('link', function (record) { 
        return record.get('linkTypeCode') === 'NSL'; 
      });
    });
  }

});

我还会注意到DS.filter会返回一个实时记录数组,这意味着它的记录始终与商店了解的记录保持同步。可以执行以下操作。

Store.find('link');
return Store.filter('link', function (record) {
  return record.get('linkTypeCode') === 'NSL';
});