ember-resource icon indicating copy to clipboard operation
ember-resource copied to clipboard

Bindings not syncing before save()

Open rykov opened this issue 12 years ago • 1 comments

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

rykov avatar Nov 29 '11 21:11 rykov

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

staugaard avatar Dec 01 '11 06:12 staugaard