在Ember.computed中将几个计算聚合为一个

时间:2016-12-01 10:11:41

标签: ember.js

让我们假设,我的控制器中有几个计算属性可以改变模型:     

  _parents: Ember.computed.mapBy('model', 'parent'),
  _parentUniq: Ember.computed.uniq('_parents'),
  parents: Ember.computed.map('_parentUniq', (rawParent)=> {
return `\parent\${rawParent}`
  }),
  sortedParents:Ember.computed('parents',function(){
    return this.get('parents').sort();
  }),

在我的模板中,我只使用sortedParents。我可以用某种方式链接Ember.computed吗?

1 个答案:

答案 0 :(得分:1)

您可以使用ember-composable-helpers插件。你可以链多个助手。 reference
样本格式,

(sort-by "age:desc" (map (action "appendParent") (union (map-by 'parent' model))))

actions

中加入以下功能
appendParent(rawParent){
 `\parent\${rawParent}`
}

编辑1: 如果只是字符串或数字的数组,那么你应该提供排序函数来排序,

{{sort-by mySorter result}}

并在控制器中定义mySorter函数,

import Ember from 'ember';
export default Ember.Controller.extend({
    result: ['a', 'c', 'b'],
    mySorter(a, b) {
        if (a > b) {
            return 1;
        } else if (a < b) {
            return -1;
        }
        return 0;
    }
});