2

In this jsfiddle, I have EmBlog.PostsNewRoute and EmBlog.PostsEditRoute. The routes contain events for 'save, cancel and destroy'.

When I create a new record, it only creates it in memory and never calls the store.commit() and in the console, it throws the error:

Uncaught TypeError: Cannot call method 'commit' of undefined

When I try to edit, it throws thesame error but then the edit still happens only in memory.

The destroy action also fails.

When I call cancel, I get:

Cannot read property 'defaultTransaction' of undefined

Most of the code is in the jsfiddle. The save and cancel events follow the pattern described by Yehuda here:

    App.NewUserRoute = Ember.Route.extend({
      model: function() {
         return App.User.createRecord();
      },

     events: {
         save: function(user) {
          this.get('store').commit();
         }
     }
   });

Thanks

Community
  • 1
  • 1
brg
  • 3,915
  • 8
  • 37
  • 66

1 Answers1

5

Updated fiddle! it is now working for create, edit and destroy use cases. See below for details on what I changed...

When I create a new record, it only creates it in memory and never calls the store.commit() and in the console, it throws the error: Uncaught TypeError: Cannot call method 'commit' of undefined

original PostNewRoute failed because this.store is undefined. Also this.content would have been undefined.

save: function(post) {
  this.store.commit();
  this.content.addObserver('id', this, 'afterSave');
 },

Updated version calls commit on the post's transaction. Also using post.one callback to transition after record is created.

 save: function(post) {
   post.one('didCreate', this, function(){
     this.transitionTo('posts.show', post);
   });
   post.get('transaction').commit();
 },

Will update later with details on other updates...

When I try to edit, it throws thesame error but then the edit still happens only in memory.

The destroy action also fails.

When I call cancel, I get: Cannot read property 'defaultTransaction' of undefined

Community
  • 1
  • 1
Mike Grassotti
  • 19,040
  • 3
  • 59
  • 57