2 votes

Comment référencer un contrôleur EmberJS depuis une autre vue

Je suis en train d'utiliser les outils Ember pour mon application. Maintenant je veux ajouter un champ de texte pour déclencher une recherche dans mon contrôleur, comme dans cet exemple. Voici le contrôleur et la vue :

ProductsController :

var ProductsController = Ember.ArrayController.extend({
  search: function(query) {
    console.log(query);
  }
});

module.exports = ProductsController;

SearchFieldView :

var SearchFieldView = Ember.TextField.extend({
  insertNewline: function() {
    var query = this.get('value');
    App.ProductsController.search(query);
  }
});
module.exports = SearchFieldView;

Mais à chaque fois que le champ de texte change, j'obtiens une erreur indiquant que le App.ProductsController n'a pas de méthode search. J'ai donc l'impression que ce n'est pas celui que j'ai créé mais celui qui a été généré.

1voto

Raj Points 362

Vous pouvez utiliser this.get('controller') pour obtenir l'instance du contrôleur actuel. ou si vous avez besoin d'une autre instance de contrôleur, vous pouvez utiliser this.get('controller').get('controllers.anothercontroller').. JSBin

J'espère que cela vous aide.

0voto

Andreas Köberle Points 16453

D'accord, j'ai compris. App.ProductsController n'est pas l'instance du contrôleur réel et comme toutes les vues sous la route ont le même contrôleur, c'est juste this.get('controller')

var SearchFieldView = Ember.TextField.extend({
  insertNewline: function() {
    var query = this.get('value');
    this.get('controller').search(query);
  }
});
module.exports = SearchFieldView;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X