使用 PouchDB 适配器在 Ember 2.2 中过滤结果

Filtering Results in Ember 2.2 with PouchDB Adapter

很难理解 Ember 2.2 中的过滤。我有一个 'isArchived' 属性为 true 或 false 的项目列表。我有两条用于活动 (false) 和存档 (true) 的路线,它们共享相同的组件,每个状态都有一些不同的 text/buttons。

<h2>{{slideshow.title}}</h2>

{{#if slideshow.isArchived}}
    <p class="stats"><strong>Archived on</strong> {{slideshow.dateArchived}}</p>

    <ul class="btn-list">
        <li><a {{action 'restoreSlideshow' slideshow}}>Restore</a></li>
    </ul>
{{else}}
    <p class="stats"><strong>Created on</strong> {{slideshow.dateCreated}}</p>

    <ul class="btn-list">
        <li><a {{action 'archiveSlideshow' slideshow}}>Archive</a></li>
    </ul>
{{/if}}

组件 JS:

    archiveSlideshow: function(slideshow) {
        slideshow.set('isArchived', true);
        slideshow.save();
    },
    restoreSlideshow: function(slideshow) {
        slideshow.set('isArchived', false);
        slideshow.save();
    }

使用此代码,列表按预期工作,单击存档将从列表中删除该项目,它会出现在另一个列表中。但是当我启动 ember 服务器时,列表是空白的?我确实在 PouchDB 检查器中看到了数据。如果我创建数据,它会出现,但在我 killed/restarted 之前创建的任何内容都不会出现。

model() {
    return this.store.filter('slideshow', function(record) {
        return record.get('isArchived') === false;
    });
}

使用此代码,数据确实出现在开始时,但显然没有被过滤:

model() {
    return this.store.findAll('slideshow');
}

使用我在另一个 post 中找到的代码,当我单击存档按钮时,文本会发生变化,但它不会从列表中消失,直到我离开并返回:

model() {
    var self = this;

    return new Ember.RSVP.Promise(function(resolve) {
        self.store.findAll('slideshow').then(function(slideshows) {
            resolve(slideshows.filterBy('isArchived', false));
        });
    });
}

还发现了这个方法,它与前面的方法做同样的事情:

model() {
    return this.store.findAll('slideshow').then(function(slideshows) {
        return slideshows.filter(function(slideshow) {
            return slideshow.get('isArchived') === false;
        });
    });
}

每条路线的模型函数都相同,唯一的区别是=== false 或=== true。

对我做错了什么有什么想法吗?

找到了修复它的方法:

model() {
    return this.store.findAll('slideshow');
}

控制器:

activeSlideshows: function() {
    return this.get('model').filterBy('isArchived', true);
}.property('model.@each.isArchived')

查看:

{{#each activeSlideshows as |slideshow|}}
{{/each}}