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