【发布时间】:2016-03-25 03:41:04
【问题描述】:
我想通过文本字段过滤模型,过滤器应该在用户输入时应用。我来自 angular(不是专业人士,但我设法在那里创建了这样的过滤器),所以我希望这很容易。呵呵。
list.hbs:
{{input type='text' placeholder='Filter' size='50' valueBinding='searchKeyword'}}
<ol>
{{#each model.articles as |article|}}
<li>{{{article.title}}</li>
{{/each}}
</ol>
我知道这个问题被问了很多,我做了很多研究,然后才决定搜索量不适合这样的问题,并且我不了解 ember 的一些核心思想。似乎随着从 1.x 到 2.x 的转换,大多数示例、问题和指南都是无效的。我的问题已经被问过多次了:
EmberJS filter array of items as the user types
text field filtering a list using ember + ember data
Emberjs - Connecting an {{ input }} filter bar with my list of Objects. As I type, the list filters
但所有答案都使用控制器。文档说“控制器将被组件取代”。那么...如何以新的方式过滤模型?
--
更新
我使用 Remi 的示例创建了这个组件:
export default Ember.Component.extend({
filteredArticles: Ember.computed('articles', 'filter', function() {
var keyword = this.get('filter');
var filtered = this.get('articles');
if (keyword) {
keyword = keyword.toLowerCase().trim();
filtered = this.get('articles').filter((item) => item.get('title').toLowerCase().includes(keyword));
}
return filtered;
})
});
计算属性用作{{#each filteredArticles... 参数,不再需要预先设置属性(这会引发弃用警告)。
【问题讨论】:
标签: javascript ember.js