mardi 3 février 2015

how to inject a store into a component

Following the instructions of this SO answer, I tried to inject the store into a component by passing it in like store=store and/or store=controller.store



<li> {{my-component id=item.customid data=item.stats notes=item.notes store=store}} </li>


or



<li> {{my-component id=item.customid data=item.stats notes=item.notes store=controller.store}} </li>


The goal was then to be able to do this in an action in the componeent



var todo = this.get('store');
console.log(todo, "the new store");
todo.set('notes', bufferedTitle);
console.log(todo, "todo with notes set");
todo.save();


However, todo.save(); always triggers



Uncaught TypeError: undefined is not a function


Notice that I logged the store? this is what it shows



Class {_backburner: Backburner, typeMaps: Object, recordArrayManager: Class, _pendingSave: Array[0], _pendingFetch: ember$data$lib$system$map$$Map…}


If i inspect it, it does indeed show that notes were set via todo.set('notes', bufferedTitle); however, it doesn't have any of the other attributes of my model that I defined for the index route, and this object doesn't have a 'save' method. i.e. it doesn't seem to be the actual store.


I got the same results trying this SO answer where it says to get the store of the targetObject



var todo = this.get('targetObject.store');


Note, I also tried this, i.e. setting the store to be the store of the item.



<li> {{my-component id=item.customid data=item.stats notes=item.notes store=item.store}} </li>

Aucun commentaire:

Enregistrer un commentaire