如何使用ember.computed创建可重用的代码?

时间:2015-08-21 08:36:55

标签: ember.js ember-cli

我对ember完全不熟悉,经过大量的搜索后,我无法弄清楚如何使用Ember.computed属性制作可重用的代码。 这是一个例子:我有两个控制器,它们有相似的代码部分用于排序数组(它们接收不同的模型)

export default Ember.Controller.extend({
    sortProps: ['createdAt:desc'],
    sortedPosts: Ember.computed.sort('model', 'sortProps'),
    last3SortedPosts: Ember.computed('sortedPosts', function() {
    return this.get('sortedPosts').slice(0,3);
}),

...

我希望不要写两次。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

mixins / sorted-posts.js

export default Ember.Mixin.extend({
  sortProps: ['createdAt:desc'],
  sortedPosts: Ember.computed.sort('model', 'sortProps'),
  last3SortedPosts: Ember.computed('sortedPosts', function() {
    return this.get('sortedPosts').slice(0,3);
  })
});

在您的控制器中:

import SortedPostsMixin from '../mixins/sorted-posts';

export default Ember.Controller.extend(SortedPostsMixin, {
/* .. */
});