I am trying to initialize a changeset in my component init:
import Ember from 'ember';
import DS from 'ember-data';
import Changeset from 'ember-changeset';
import lookupValidator from 'ember-changeset-validations';
export default Ember.Component.extend({
init(){
this._super(...arguments);
let model = this.get('report');
let validator = this.get('validator');
this.changeset = new Changeset(model, lookupValidator(validator), validator);
console.log('changeset defined!');
console.log(this.changeset);
},
....
This is for a route that edits the report model, and in the route I have RSVP loaded multiple models including reports, report and others.
The reports model is used to create a list of links to other report models.
When I load this route ( say loading reports/1), I gets the correct changeset, and things works as expected.
However, when I transition to a different report model (reports/2), the changeset does not update, and stays the same (showing reports/1 content) no matter what I do.
I thought it is due to the changeset is created at init(). But even as I change it to didReceiveAttrs(), the same issue persists. I am assuming this is due to I loaded all the attrs in the reports call, so the transition does not require additional Attr thus not triggering didReceiveAttrs()
In a different try, where I create changeset in template with the “with” template helper:
{{#with (changeset section validator) as |changeset|}}
{{some-form}}
{{/with}}
I managed to get the correct behavior, the changeset updates when I choose different report model. But I am also hoping to do some computed properties that requires changeset object be accessible from within component.
What is the right way create Changeset in this case? Is there a component event that will solve my use case? Or, is there a way to access the aliased “changeset” object created with the “with” helper in template from the component?
Hope this makes sense…