在路由器中过滤 ember 模型

Filtering ember model in router

我正在尝试 return 将模型存储到我的模板中,但在我执行 return 之前,我想按某个 属性、return 进行过滤仅查看那些具有 属性 的记录。此外,在我的模型中,我用序列化程序覆盖了默认值 'id'。

在我的控制台中,我收到 "store is not defined ReferenceError: store is not defined" 有什么想法吗?

这是我的路线:

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')
});

您的路线正在呼叫 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 returns 一个实时记录数组,这意味着它的记录始终与商店了解的记录保持同步。可以执行以下操作。

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