staugaard/sproutcore-resource — Issue #23: Bindings not syncing before save()
Author: rykov
Created: 2011-11-29 21:02:02+00:00
State: open

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:

```javascript
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