【问题标题】:Filtering ember model in router在路由器中过滤 ember 模型
【发布时间】:2015-05-12 16:20:13
【问题描述】:

我正在尝试将模型存储返回到我的模板中,但在返回之前,我想按某个属性进行过滤,只返回那些具有该属性的记录。此外,在我的模型中,我使用序列化程序覆盖了默认的“id”。

在我的控制台中,我收到“未定义存储参考错误:未定义存储”有什么想法吗?

这是我的路线:

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

【问题讨论】:

    标签: ember.js filter model store


    【解决方案1】:

    您的路线调用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';
    });
    

    【讨论】:

    • 谢谢先生。非常感谢
    • 这个答案,特别是底部的 sn-p,值得更多的支持。
    • 这意味着我的adapter 必须实现findfilter,对吧?
    猜你喜欢
    • 2014-01-26
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多