Skip to content

Instantly share code, notes, and snippets.

@Gaurav0
Forked from epyx25/application.controller.js
Created March 14, 2016 00:42
Show Gist options
  • Select an option

  • Save Gaurav0/ca7e7083391a401d4e50 to your computer and use it in GitHub Desktop.

Select an option

Save Gaurav0/ca7e7083391a401d4e50 to your computer and use it in GitHub Desktop.
Rollback Relationships
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
import Ember from 'ember';
export default Ember.Controller.extend({
club: Ember.computed.alias('model.club'),
actions: {
change: function(player){
this.set('club.captain', player);
},
rollback: function(club){
console.log('rollback');
}
}
});
import Ember from 'ember';
export default Ember.Route.extend({
init() {
this._super(arguments);
var club = {
"data":
{
"attributes": {
"name": "Benfica",
"location": "Portugal"
},
"id": "1",
"relationships": {
"captain": {
"data": {
"id": "3", "type": "players"
}
}
},
"type": "clubs"
}
};
var players = {
data: [
{
"attributes": {
"name": "Eusebio Silva Ferreira",
"skill": "Rocket shot",
"games-played": 431
},
"id": "3",
"relationships": {
"club": {
"data": {
"id": "1",
"type": "clubs"
}
}
},
"type": "players"
},
{
"id": 1,
"attributes": {
"name": "João Vieira Pinto",
"skill": "Thunder kick",
"games-played": 220
},
"relationships": {
"club": {
"data": {
"id": "1",
"type": "clubs"
}
}
},
"type": "players"
}
]
};
$.mockjax({
url: '/clubs/1',
dataType: 'json',
responseText: club
});
$.mockjax({
url: '/players',
dataType: 'json',
responseText: players
});
},
model: function() {
var store = this.store;
return Ember.RSVP.hash({
club: store.find('club', 1),
players: store.findAll('player')
});
}
});
{{club.name}}
<div>Captain: {{club.captain.name}}</div>
<button {{action 'rollback' club}}>Rollback</button>
<h3>Players</h3>
<i>Click on the player's name to make him captain of the team</i>
{{#each model.players as |player|}}
<div {{action 'change' player}}>{{player.name}}</div>
{{/each}}
import Ember from 'ember';
export default $.extend(true, {}, Ember.Mixin.create({
}));
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr(),
location: DS.attr(),
captain: DS.belongsTo('player')
});
import DS from 'ember-data';
import Rollback from "../mixins/rollback";
export default DS.Model.extend({
name: DS.attr(),
skill: DS.attr(),
gamesPlayed: DS.attr(),
club: DS.belongsTo('club')
});
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none'
});
Router.map(function() {
});
export default Router;
{
"version": "0.6.4",
"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/2.4.1/ember.debug.js",
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.4.0/ember-data.js",
"ember-template-cmompiler": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.4.1/ember-template-compiler.js",
"jquery-mockjax": "https://cdnjs.cloudflare.com/ajax/libs/jquery-mockjax/1.6.2/jquery.mockjax.js"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment