Hi
In my application I have to build a search component to search for articles via an EAN (European Article Number).
My model looks like the following:
/app/models/article.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
number: DS.attr('number')
});
My backend provides data at articles/8711500019974
or at articles?ean=8711500019974
, but if I call only articles/
without any ean the server responses with an error.
I’ve got an route called ean and an component called ean-view. I use the ember-route-action-helper addon to use Closure Actions in my route.
/app/templates/ean.hbs
{{ean-view article=model findArticle=(route-action 'findArticle')
In my route I load the data and refresh it if the component needs new data like this:
/app/routes/ean.js
import Ember from 'ember';
export default Ember.Route.extend({
model(ean) {
if (typeof ean === "object){
return {};
} else {
return this.get('store').findRecord('article', ean);
}
},
actions: {
findArticle(ean) {
this.model(ean);
}
}
});
This is my components template:
/app/templates/components/ean-view.hbs
{{input value=ean}}
<button type="button" onclick={{action "findArticle"}}>Search</button>
{{article.name}}
{{article.number}}
My components controller looks like the following:
/app/components/ean-view.js
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
findArticle() {
this.get('findArticle')(this.get('ean'));
}
}
});
I think the main problem is that when my model updates in the route, the component does not get the new data, so my question is, how can I change this?
If you detect any errors or bad practices in my code, please tell me what to change