Comment puis-je transmettre des valeurs externes à un contrôleur. Dans le code ci-dessous, je voudrais transmettre les valeurs filtertype
et filterterm
de PostsController
en PostsDynamicController
. Quel est le moyen d'y parvenir?Comment passer des arguments à une méthode init du contrôleur?
J'ai un modèle comme celui-ci
<script type="text/x-handlebars" id="posts">
{{view Ember.Select
contentBinding="App.names.content"
valueBinding="App.names.selected"
}}
{{view Ember.TextField valueBinding="filterterm" }}
<button {{action "submit"}} > Submit</button>
{{outlet}}
</script>
Une partie de mon app.js est la suivante:
App.PostsController = Ember.ObjectController.extend({
content: [],
filterterm: "",
submit: function() {
var filtertype = App.names.selected;
var filterterm = this.get('filterterm');
this.transitionToRoute("posts.dynamicfinder");
}
});
App.PostsDynamicController = Ember.ObjectController.extend({
init: function() {
//want access to filtertype and filterterm here so that I can pass them in find. i.e.
//App.Request.find(filtertype: filterterm);
this.set('model', App.Request.find(..);
}
});
Si 'term' et' type' sont définis à la fin de cela, comment définir le modèle? Dans ce cas, je voudrais définir le modèle à: '.set ('model', App.Request.find (type: terme))' – Anthony
J'ai un exemple de travail sur jsbin si cela aide: http: // jsbin. com/OcAyoYo/33/edit Lorsqu'une liste déroulante est modifiée et qu'une valeur de zone de texte est entrée et que l'on clique sur soumettre, je voudrais faire une demande à dynamicfinder avec le modèle 'find (terme: type)' – Anthony
Je ne pense pas ' App.Request.find (type: terme) 'fonctionne comme vous le pensez. Il renvoie une collection live qui inclut chaque 'App.Request' dans le magasin. Ensuite (async), il lance une requête API avec la requête spécifiée. Tous les objets renvoyés par l'API sont ajoutés au magasin et apparaissent ainsi dans la collection live. Cela ressemble à ce que vous voulez renvoyer est une collection filtrée, de sorte que seuls les enregistrements correspondant au terme spécifié sont affichés. –