mercredi 7 décembre 2016

Ember - Using controller functions in other controller functions

I am trying to create a page that shows a list of products with filtering and multiple ways of sorting the list. Rather than repeating the filtering code for each sort, I wanted to start each of the sorting methods with a call to the filtering method. I can currently filter by name:

filterText: '',
filteredResults: function() {
    var filterText = this.get('filterText');
    var regexp = new RegExp(filterText,'gi');
    var causes = this.get('model.products').filter(function(name){
      return name.get('name').match(regexp);
    });
    return causes;
}.property('filterText'),

However I now want to use this function in the sort methods. I've tried using Ember.computed.sort :

priceAscSorting: ['price'],
sortPriceAsc: Ember.computed.sort('filteredResults', 'priceAscSorting'),

but it seems like it treats the first input as null if I stick it in a template. If I try calling the filter method inside the sorting method:

priceAscSorting: ['views'],
sortPriceAsc: function() {
  var products = filteredResults();
}

Ember throws a compiler error saying 'filteredResults' is not defined. How can I access my filter methods to use in my sorting methods?




Aucun commentaire:

Enregistrer un commentaire