2017-09-17 3 views
0

Je suis nouveau sur les braises, ce que j'ai créé est une application de gestionnaire de tâches dans Ember. J'ai un modèle pour les tâches qui sont les suivantes:Données de filtre de feu Ember dans le contrôleur

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    title: DS.attr('string'), 
    location: DS.attr('string'), 
    date: DS.attr('date'), 
    archive: DS.attr('boolean'), 
}); 

J'ai aussi pour montrer toutes les tâches de ce modèle dans une page tasklist. Cependant, j'ai actuellement des problèmes de filtrage seulement les tâches où les archives ne sont pas égales à vrai.

Dans ma route tasklist J'ai cela tirer à travers ma tâche

model: function() {  
     return this.store.findAll('task'); 
    } 

Cependant je besoin de ceci pour filtrer toutes les tâches où l'archive est égale à false. Je fais je l'ajoute ici ou dans mon contrôleur.

Updated

J'ai ajouté à mon contrôleur:

filteredModel: Ember.computed('model', function(){ 
     let model = this.get('model'); 

     return model.filter(function(item){ 
      return item.data.archive == false; 
     }); 

    }), 

Ce genre de travail, de sorte que son affichage d'une liste filtrée mais quand j'ajoute un nouvel élément à la liste, il ne marche pas mettre à jour la liste, avec le nouvel élément.

Répondre

1

introduisons la propriété calculée dans le contrôleur qui retourne le taskList filtré,

notArchivedTask: Ember.computed.filterBy('model','archive',false) 
+0

J'ai ajouté à mon contrôleur et mis à jour mon chaque boucle d'incorporer le notArchivedTask comme modèle, cependant affiché la vue sans données – jsg

+0

Dans votre code mis à jour, vous devez inclure la clé dépendante 'model. []' pour que cela recalcule chaque élément d'ajout/suppression. – kumkanillam

+0

seriez-vous en mesure de démontrer dans une réponse – jsg