Skip to content

Instantly share code, notes, and snippets.

@patrickberkeley
Last active January 27, 2016 05:10
Show Gist options
  • Select an option

  • Save patrickberkeley/924dd7d31e0984b708f9 to your computer and use it in GitHub Desktop.

Select an option

Save patrickberkeley/924dd7d31e0984b708f9 to your computer and use it in GitHub Desktop.
load-nested-resources-on-demand
import DS from 'ember-data';
export default DS.FixtureAdapter.extend();
import Ember from 'ember';
export default Ember.Controller.extend({
appName:'Ember Twiddle'
});
import Ember from 'ember';
export default Ember.Route.extend({
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{link-to 'Authors' 'authors'}}
<br>
{{outlet}}
<br>
<br>
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll('author');
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model() {
var author = this.modelFor('authors.show');
var books = author.get('books');
return Ember.RSVP.hash({books});
}
});
Books
<ul>
{{#each model.books as |book|}}
<li>
{{book.title}}
</li>
{{/each}}
</ul>
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.store.find('author', params.id);
}
});
<ul>
{{#each model as |author|}}
<li>
{{link-to author.name 'authors.show.books' author.id}}
</li>
{{/each}}
</ul>
{{outlet}}
import DS from 'ember-data';
var Author = DS.Model.extend({
name: DS.attr('string'),
books: DS.hasMany('book', { async: true })
});
Author.reopenClass({
FIXTURES: [
{
id: 1,
name: 'Dickinson',
books: [1]
},
{
id: 2,
name: 'Twain',
books: [2, 3]
}
]
});
export default Author;
import DS from 'ember-data';
var Book = DS.Model.extend({
title: DS.attr('string'),
author: DS.belongsTo('author', { async: true })
});
Book.reopenClass({
FIXTURES: [
{
id: 1,
title: 'Learn Ember.js',
author: 1
},
{
id: 2,
title: '...',
author: 2
},
{
id: 3,
title: 'Profit!',
author: 2
}
]
});
export default Book;
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.route('authors', function() {
this.route('show', { path: ':id' }, function() {
this.route('books');
});
});
});
export default Router;
{
"version": "0.5.0",
"EmberENV": {
"FEATURES": {}
},
"options": {
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/1.13.9/ember.js",
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/1.13.11/ember-data.js",
"ember-template-compiler": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/1.13.9/ember-template-compiler.js"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment