Commit c3a471b8 authored by Stas SUȘCOV's avatar Stas SUȘCOV

Add routing support by setting a context filter.

`TodosController` will filter the content based on router's filter.
parent 127c55a1
...@@ -6,8 +6,22 @@ define('app/controllers/todos', [ 'ember' ], ...@@ -6,8 +6,22 @@ define('app/controllers/todos', [ 'ember' ],
*/ */
function() { function() {
return Ember.Controller.extend({ return Ember.Controller.extend({
entries: function() {
var filter = this.getPath( 'content.filterBy' );
if ( Ember.empty( filter ) ) {
return this.get( 'content' );
}
if ( !Ember.compare( filter, 'completed' ) ) {
return this.get( 'content' ).filterProperty( 'completed', true );
}
if ( !Ember.compare( filter, 'active' ) ) {
return this.get( 'content' ).filterProperty( 'completed', false );
}
}.property( 'content.remaining' )
}); });
} }
); );
...@@ -20,7 +20,10 @@ define('app/router', [ 'ember' ], ...@@ -20,7 +20,10 @@ define('app/router', [ 'ember' ],
connectOutlets: function( router ) { connectOutlets: function( router ) {
var controller = router.get( 'applicationController' ); var controller = router.get( 'applicationController' );
var context = controller.namespace.entriesController; var context = controller.namespace.entriesController;
context.set( 'filterBy', '' );
// This require was left here exclusively for design purposes
// Loads decoupled controller/view based on current route
require([ 'app/controllers/todos', 'app/views/items' ], require([ 'app/controllers/todos', 'app/views/items' ],
function( TodosController, ItemsView ) { function( TodosController, ItemsView ) {
controller.connectOutlet({ controller.connectOutlet({
...@@ -30,15 +33,52 @@ define('app/router', [ 'ember' ], ...@@ -30,15 +33,52 @@ define('app/router', [ 'ember' ],
}); });
} }
); );
} }
}), }),
active: Ember.Route.extend({ active: Ember.Route.extend({
route: '/active', route: '/active',
connectOutlets: function( router ) {
var controller = router.get( 'applicationController' );
var context = controller.namespace.entriesController;
context.set( 'filterBy', 'active' );
// This require was left here exclusively for design purposes
// Loads decoupled controller/view based on current route
require([ 'app/controllers/todos', 'app/views/items' ],
function( TodosController, ItemsView ) {
controller.connectOutlet({
viewClass: ItemsView,
controller: TodosController.create(),
context: context
});
}
);
}
}), }),
completed: Ember.Route.extend({ completed: Ember.Route.extend({
route: '/completed', route: '/completed',
connectOutlets: function( router ) {
var controller = router.get( 'applicationController' );
var context = controller.namespace.entriesController;
context.set( 'filterBy', 'completed' );
// This require was left here exclusively for design purposes
// Loads decoupled controller/view based on current route
require([ 'app/controllers/todos', 'app/views/items' ],
function( TodosController, ItemsView ) {
controller.connectOutlet({
viewClass: ItemsView,
controller: TodosController.create(),
context: context
});
}
);
}
}), }),
specs: Ember.Route.extend({ specs: Ember.Route.extend({
......
...@@ -10,7 +10,7 @@ define('app/views/items', [ ...@@ -10,7 +10,7 @@ define('app/views/items', [
*/ */
function( items_html ) { function( items_html ) {
return Ember.CollectionView.extend({ return Ember.CollectionView.extend({
contentBinding: 'controller.content', contentBinding: 'controller.entries',
tagName: 'ul', tagName: 'ul',
elementId: 'todo-list', elementId: 'todo-list',
itemViewClass: Ember.View.extend({ itemViewClass: Ember.View.extend({
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment