Skip to content

Instantly share code, notes, and snippets.

@adriancooney
Created August 13, 2019 13:03
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 adriancooney/63ec3bce0621e9565caf4adf0232223c to your computer and use it in GitHub Desktop.
Save adriancooney/63ec3bce0621e9565caf4adf0232223c to your computer and use it in GitHub Desktop.
Ember Data Set & Load
import Ember from 'ember';
import { inject as service } from '@ember/service';
export default Ember.Controller.extend({
store: service(),
appName: 'Ember Twiddle',
logs: Ember.A([]),
init() {
// Add an example record
this.loadDog();
this.logDog(1);
// Update the example model locally
this.log("Setting dog name locally");
let dog = this.store.peekRecord("dog", 1);
dog.set("name", "Local Dog");
this.logDog(1);
// Update the server via the remote again
this.loadDog();
this.logDog(1);
this.log("Unloading dog=1 from store");
dog.unloadRecord();
this.loadDog();
this.logDog(1);
},
log(line) {
this.logs.push(line);
},
logDog(dogId) {
let dog = this.store.peekRecord("dog", dogId);
this.log(`peekRecord('dog', ${dogId}) = Dog{id=${dog.id} name=${dog.name}}`);
},
loadDog() {
this.log("Loading dog 1 from server");
this.store.push({
data: [{
type: "dog",
id: 1,
attributes: {
name: "Remote Dog",
},
}],
});
}
});
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { belongsTo, hasMany } from 'ember-data/relationships';
export default Model.extend({
name: attr(),
});
{{#each logs as |line index|}}
<p><code>{{index}}: {{line}}</code></p>
{{/each}}
{
"version": "0.15.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3"
},
"addons": {
"ember-data": "3.4.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment