Ember - 在其他控制器功能中使用控制器功能

时间:2016-12-08 01:17:11

标签: javascript ember.js

我正在尝试创建一个页面,其中显示了具有过滤功能的产品列表以及多种排序列表的方法。我想要通过调用过滤方法来启动每个排序方法,而不是重复每种排序的过滤代码。我目前可以按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'),

但是我现在想在sort方法中使用这个函数。我尝试过使用Ember.computed.sort

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

但是如果我将它粘贴在模板中,它似乎将第一个输入视为null。如果我尝试在排序方法中调用filter方法:

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

Ember抛出编译错误'filteredResults' is not defined。如何访问我的过滤方法以在我的排序方法中使用?

1 个答案:

答案 0 :(得分:0)

您的代码是正确的,它将使用filteredResults计算属性并使用price键以升序返回排序结果。

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

但似乎它将第一个输入视为null,如果我把它粘在一个   模板

这意味着您需要检查filteredResults计算属性