2017-03-14 1 views
0

J'essaie actuellement de filtrer des données à partir d'une base de données Firebase en utilisant des données de braises. Je souhaite que les données soient filtrées lorsque l'utilisateur saisit le champ de recherche en fonction du nom de l'attribut de données.Ember Firebase de filtrage de données

C'est actuellement le modèle:

import DS from 'ember-data'; 
    export default DS.Model.extend({ 
     name: DS.attr(), 
     requirements: DS.attr(), 
     skills: DS.attr() 
    }); 

C'est actuellement la route:

import Ember from 'ember'; 
export default Ember.Route.extend({ 
    model() { 
     var obj = this.store.findAll('quest'); 
     return obj; 
    } 
}); 

Le firebase actuel DB est rempli de données factices, mais a également l'ID généré automatiquement généré par en utilisant la commande push, je ne sais pas si cela pose des problèmes. J'ai essayé de filtrer les données en utilisant le filtre dans la route mais je n'ai pas eu de succès et c'est la première fois que j'utilise le brai et la base de feu. Je vous remercie.

Modifier: J'ai créé un contrôleur pour tenter de filtrer les données. Les données sont transmises au contrôleur par le biais d'une action, mais je n'arrive pas à analyser les données. Voici le code du contrôleur:

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    actions: { 
     filter() { 
      var model = this.get('model'); 
      console.log(model); 
      this.toggleProperty('isExpanded'); 
    } 
} 

Edit 2: J'ai mis à jour le contrôleur et peut correctement rechercher le DB firebase mais il ne lit pas ma valeur de recherche correctement. Si je change la ligne "startAt: search" en une ligne codée en dur, il filtre correctement. Des idées?

Édition 3: Joindre une image pour montrer à quoi ressemble la page en cours de chargement, ainsi que la journalisation de la recherche pour montrer qu'elle est passée. console on the load of the page est ici le code mis à jour dans le contrôleur:

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    queryParams: ['search'], 
    search: "" 
}); 
+0

vous pouvez essayer filterBy méthode comme 'this.get ('model'). filterBy ('nom', 'typedvalue')' – kumkanillam

+0

@kumkanillam J'ai essayé que dans le contrôle er mais il retourne un tableau vide. – pvelasqu

+0

Le contrôleur et le nom du fichier de route sont identiques. mettre à jour votre code tenté en question – kumkanillam

Répondre

0

Vous devez regarder le Query Parameters docs. Définissez la propriété queryParams dans le fichier route et le fichier de contrôleur pour obtenir la valeur dans le modèle.

Ainsi, dans route.js définissent queryParams comme ci-dessous

queryParams: { 
    search: { 
     refreshModel: true 
    } 
    } 

et dans le fichier du contrôleur,

queryParams: ['search'], 
search: null 

Si vous venez de définir la propriété search alors il start full transition

+0

Désolé je n'ai pas posté le contrôleur, mais oui, il a ces lignes de code et j'ai également ajouté les paramètres de requête à la route, toujours rien. Il enregistre correctement toutes les informations dans la console, mais la recherche ne va pas. – pvelasqu

+0

@pvelasqu Veuillez inclure le code où vous définissez 'this.set ('search', 'typedvalue')'? cette partie du code est très importante pour déclencher une transition complète – kumkanillam

+0

Désolé de ne pas savoir ce que vous voulez dire.Je ne pense pas que je l'ai nulle part. J'essaie de tirer la valeur de la recherche dans la route et d'essayer de la passer en paramètre. – pvelasqu