staugaard / ember-resource

This project has moved. The canonical repository is now located at: https://github.com/zendesk/ember-resource
https://github.com/zendesk/ember-resource
Apache License 2.0
122 stars 27 forks source link

Bindings not syncing before save() #23

Open rykov opened 12 years ago

rykov commented 12 years ago

I am chaining the saving of a few resources. When the first resource is saved, it is updated with the ID that I need to save the second resource (via a binding). However, when I use jQuery.Deferred callbacks to trigger the chain, the bindings from the first objects don't propagate to the second object.

I'm wondering whether it makes sense to call SC.run.sync() before calling toJSON() in the save() function. I'm not sure whether it's the best solution to do it synchronously because the save() call might be tied to a user action.

Here's some demo code that manifests the issue:

R = SC.Resource.define({
  url: '/url',
  schema: {
    id:  String,
    foo: String
  }
});

Demo = SC.Application.create({
  foo: 'hello',
  r: R.create({
    fooBinding: 'Demo.foo'
  })
});

// run.once() to allow the original value to sync
SC.run.once(Demo, function() {
  Demo.set('foo', 'world');
  Demo.r.save();
});

In this test, foo=hello is sent to the server, not foo=world

staugaard commented 12 years ago

Yeah a SC.run.sync() call might be a good idea in toJSON or save. Have you tried adding it?