Ember.js filter
Filtering content of array controller based on multiple items.
by Aras Balali Moghaddam
HTML
<script src="http://cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.rc.1.js"></script>
<script src="http://cloud.github.com/downloads/emberjs/ember.js/ember-latest.js"></script>
<script type="text/x-handlebars">
<b>Active Items:</b>
<ul>
{{#each App.itemsController.active}}
<li>{{id}} -> {{title}}</li>
{{/each}}
</ul>
<br />
<b>Active and A:</b>
<ul>
{{#each App.itemsController.activeAndA}}
<li>{{id}} -> {{title}}</li>
{{/each}}
</ul>
</script>
JavaScript
window.App = Ember.Application.create();
App.itemsController = Ember.ArrayController.create({
content: [
{id: 1, title: 'A', archived: false},
{id: 2, title: 'A', archived: false},
{id: 3, title: 'C', archived: false},
{id: 4, title: 'A', archived: false},
{id: 5, title: "A", archived: true},
{id: 6, title: 'D', archived: false}
],
active: function(){
return this.filterProperty("archived", false);
}.property("content").cacheable()
,
activeAndA: function(){
return this.filter(function(item, idx, en) {
return (item.title == 'A') && (!item.archived);
});
}.property("content").cacheable()
});