backbone.epoxy icon indicating copy to clipboard operation
backbone.epoxy copied to clipboard

My computed's set function return value isn't getting merged into the model when triggered from the ui

Open OneGeek opened this issue 9 years ago • 3 comments

I have a view with a computed property that defines a set function which returns an object with some properties set. I've bound this to an <input> with the declaration value:myComputed.

The documentation of computeds describes that the return value of a computed's set is merged into the model when called.

I've confirmed the following
  • Modifying properties the computed depends on updates the <input>
  • Calling view.model.set('myComputed', '...') also updates the <input>
  • The computed's set does get called when I modify the <input>
What I expect to work, but doesn't
  • Modifying the <input> does not update the model
  • Calling view.setBinding('myComputed', '...') does not update the model

Looking at the source code I see the value I return from set gets as far as being returned from a call to accessor(self.get(self.$el, readAccessor(accessor), evt)) in the definition of EpoxyBinding, but nothing is done with it at that point.

My question

Am I misunderstanding the documentation here or is this a bug?

OneGeek avatar Jul 10 '15 19:07 OneGeek

I'm having the same issue. Have you found a solution?

docmattman avatar Jan 14 '16 18:01 docmattman

I do not believe I managed to make this happen.

OneGeek avatar Jan 15 '16 00:01 OneGeek

This works for me. Did you bind your computed correctly to an event e.g. 'input#my-computed': "value:myComputed, events:['input']"

Did you check that the attributes you return in the set function belong to a model defined in bindingSources (e.g. the model associated to the view)? Also ensure that in the set of myComputed you do not try to set this attribute directly (which would result in a recursive set call).

jekuno avatar May 20 '16 16:05 jekuno