Ember Aufruf-Aktion auf Vorlage laden

Habe ich ein ember-app mit der Kontakte-Seite. Ich habe eine Liste von Benutzern, die gefiltert werden soll, nach a) einer Suchanfrage und b) Filter gespeichert auf der Sitzung.currentUser-Modell (mit ember-simple-auth-entwickeln).

Meine route:

import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';

export default Ember.Route.extend(AuthenticatedRouteMixin).extend({
model: function() {
    return this.store.find('user');
},

setupController: function(controller, model){
  this._super(controller, model);

  var currentUser = this.store.fetch('user', this.get('session').get('user_id'));
  //console.log(currentUser);
  controller.set('currentUser', currentUser);
}
});

Mein controller:

import Ember from 'ember';

export default Ember.ArrayController.extend({

searchText: '',

filterUsers : function() {
    //Function to set the filteredUsers property, set in the route, based on the searchText

    var searchText = this.get('searchText'), regex = new RegExp(searchText, 'i');


    var us = this.get('model').filter(function(item) {

        //Run some filters here...

    });

    this.set('filteredUsers', us);
    return false;
}.observes('searchText', 'model'),

actions: {
    //Click the "Filter" button and update the server
    setFilters: function(){
        this.get('session').get('currentUser').save();
    }
}
});

Dies funktioniert bis zu einem Punkt - Eingabe von text in die searchText Feld läuft mein Filter. Jedoch habe ich zwei Probleme, die ich nicht lösen kann:

  1. Wie ich die filterUsers Funktion ausführen, wenn die Vorlage geladen wird, verwenden Sie Variablen, die auf die currentUser-Modell?
  2. Wie mache ich filterUsers laufen, wenn ich rufen Sie die setFilters Methode und den aktuellen Benutzer ändern?

Vielen Dank

InformationsquelleAutor AdamP | 2015-03-15

Schreibe einen Kommentar