Skip to content

Instantly share code, notes, and snippets.

@nook-scheel
Created September 17, 2012 17:19
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 nook-scheel/3738581 to your computer and use it in GitHub Desktop.
Save nook-scheel/3738581 to your computer and use it in GitHub Desktop.
Ember-Data Example
// <== BOOTSTRAP
var App = Ember.Application.create();
App.stateManager = Ember.StateManager.create();
DS.fixtureAdapter.createRecord = function(store, type, record) {
var json = record.toJSON();
json.id = 1;
store.didCreateRecord(record, json);
};
DS.fixtureAdapter.updateRecord = function(store, type, record) {
var json = record.toJSON();
json.id = 1;
store.didUpdateRecord(record, json);
};
// ==> BOOTSTRAP
App.Store = DS.Store.extend({
revision: 4,
adapter: DS.fixtureAdapter
});
App.Post = DS.Model.extend({
title: DS.attr('string'),
content: DS.attr('string'),
createdAt: DS.attr('date'),
comments: DS.hasMany('App.Comment')
});
App.Post.FIXTURES = [];
App.Comment = DS.Model.extend({
content: DS.attr('string'),
createdAt: DS.attr('date'),
post: DS.belongsTo('App.Post')
});
App.initialize(App.stateManager);
var posts = App.Post.find();
Ember.Logger.log(posts.get('length'), "=>", 0);
var post = App.Post.createRecord({
title: 'Hello World!',
content: 'My content'
});
DS.defaultStore.commit();
Ember.Logger.log(posts.get('length'), "=>", 1);
var transaction1 = DS.defaultStore.transaction(),
transaction2 = DS.defaultStore.transaction();
var comment = post.get('comments').createRecord({
content: 'Bonjour!'
}, transaction1);
transaction2.add(post);
post.set('title', 'Oups');
Ember.Logger.log(post.get('title'), "=>", "Oups");
Ember.Logger.log(post.get('isDirty'), "=>", true);
Ember.Logger.log(comment.get('isNew'), "=>", true);
transaction1.commit();
transaction2.rollback();
Ember.Logger.log(post.get('title'), "=>", "Hello World!");
Ember.Logger.log(post.get('isDirty'), "=>", false);
Ember.Logger.log(comment.get('isNew'), "=>", false);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment