Skip to content

Instantly share code, notes, and snippets.

@rhettl
Last active November 30, 2017 00:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rhettl/97a49de56ffc07fc4456db9b08fa5af0 to your computer and use it in GitHub Desktop.
Save rhettl/97a49de56ffc07fc4456db9b08fa5af0 to your computer and use it in GitHub Desktop.
one-to-many
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import Ember from 'ember';
export default Ember.Controller.extend({
store: Ember.inject.service(),
actions: {
createTimeslot () {
const timeslot = store.createRecord('timeslot', {});
timeslot.save()
.then(t => this.transitionToRoute('timeslots'))
;
}
}
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
timeslot: DS.belongsTo('timeslot', {inverse: 'students'})
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
import faker from 'faker';
export default Model.extend({
name: attr('string', {defaultValue: () => faker.lorem.word()}),
students: DS.hasMany('student', {inverse: 'timeslot'})
});
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('timeslots');
this.route('students');
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
});
import Ember from 'ember';
export default Ember.Route.extend({
store: Ember.inject.service(),
model () {
return this.get('store').findAll('timeslot');
}
});
<h1>Welcome to {{appName}}</h1>
<ul>
<li>{{#link-to 'students'}}Students{{/link-to}}</li>
<li>{{#link-to 'timeslots'}}Timeslots{{/link-to}}</li>
</ul>
<br>
<br>
{{outlet}}
<br>
<br>
<h2>students</h2>
<ol>
<li></li>
</ol>
<h2>Timeslots</h2>
<ol>
{{#each model as |timeslot|}}
<li>{{timslot.name}} -- {{timeslot.students.length}}</li>
{{else}}
<li>No Timeslots -- add a timeslot</li>
{{/each}}
</ol>
{
"version": "0.12.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0",
"faker": "https://raw.githubusercontent.com/Marak/faker.js/master/build/build/faker.min.js"
},
"addons": {
"ember-data": "2.12.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment