我首先有一个控制器排序帖子,然后有一个过滤器应用于他们。遗憾的是,当我在我的模板中使用{{#each post in filteredPosts}}
时,它们不会更新。
如何在多个列(不同方向)上实现排序,然后过滤AND仍然会在列表中显示新的和已删除的帖子?
从'ember'导入Ember;
export default Ember.ArrayController.extend({
sortProperties: ['isPublished:asc', 'createdAt:desc'],
sortedPosts: Ember.computed.sort('model', 'sortProperties'),
filterPost: '',
filteredPosts: function() {
var filterText = this.get('filterPost').toLowerCase()
return this.get('sortedPosts').filter(function(post){
return post.get('title').toLowerCase().indexOf(filterText) > -1
})
}.observes('sortedPosts').property('filterPost'),
});
答案 0 :(得分:3)
您的计算属性有两个错误。
.observes()
和.property()
。您只需要.property()
。 .observes()
用于在属性更新时进行副作用更改。sortedPosts
,这意味着您的属性只会在sortedPosts
迭代本身更改时重新计算,而不会在任何内容更改时重新计算。因为您要按title
属性进行过滤,所以您应该在每个实例上都看到它。您可以阅读有关此here。您的计算属性应如下所示:
filteredPosts: function() {
...
}.property('sortedPosts.@each.title', 'filterPost')