Project nested route
HTML
<script src="https://github.com/downloads/wycats/handlebars.js/handlebars-1.0.0.beta.6.js"></script>
<script src="https://github.com/downloads/emberjs/ember.js/ember-latest.js"></script>
<script src="https://github.com/downloads/emberjs/data/ember-data-latest.js"></script>
<script type="text/x-handlebars" data-template-name='application'>
<h1>Dash Router App</h1>
{{#each App.dash.store}}
<a {{action toggle name href=true}}>{{name}}</a>
{{/each}}
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name='dash'>
{{#each controller}}
<h1>{{detail}}</h1>
{{/each}}
</script>
JavaScript
$(function () {
App = Ember.Application.create();
App.Item = Ember.Object.extend({
name: null,
detail: null
});
App.dash = Ember.Object.create({
FIXTURE: [App.Item.create({
name: 'foo',
detail: 'Some very interesting foo'
}), App.Item.create({
name: 'bar',
detail: 'Bar is the root of all stuff'
}), App.Item.create({
name: 'ted',
detail: 'Ted is not my name'
})],
store: Ember.A(),
selected: Ember.A(),
_items: Ember.A(),
watchItems: function () {
debugger;
var items = this._items;
var store = this.store;
items.clear();
this.get('selected').forEach(function (name) {
var item = store.findProperty('name', name);
items.pushObject(item);
});
}.observes('selected', 'store'),
toggle: function (name) {
var selected = this.get('selected');
var index = selected.indexOf(name);
if (index !== -1) {
selected.removeAt(index);
} else {
selected.push(name);
}
console.log('toggle', name, 'is now selected?', selected.indexOf(name) !== -1, selected);
this.set('selected', selected);
},
fetch: function () {
var FIXTURE = this.FIXTURE;
var store = this.store;
if (store.length == 0) {
Ember.run.later(function () {
FIXTURE.forEach(function (item) {
store.pushObject(item);
});
}, 2000);
}
},
items: function (selected) {
var items = this._items;
items.clear();
if (Ember.isArray(selected)) {
this.set('selected', selected);
} else {
...