ember:在mixin上重用控制器动作的最佳方法

时间:2013-10-17 16:23:13

标签: ember.js

示例jsbin:http://jsbin.com/ICoLOgO/4/edit

如果我有一个提供动作的mixin,那么使用ember 1.0-rc.5可以在没有警告的情况下调用该动作。升级到ember 1.0 final会导致弃用警告显示:

Action handlers implemented directly on controllers are deprecated in favor of action handlers on an `actions` object

是否有更简单的方法在动作地图中公开各个动作而无需使用function.apply?

1 个答案:

答案 0 :(得分:27)

我只是将常见操作放在mixin上的actions哈希中,而Ember负责将操作哈希与任何扩展mixin的控制器正确合并。

App.PaginatedListController = Ember.Mixin.create({
  queryParams: ['page'],
  page: 0,

  actions: {
    nextPage: function() {
      this.incrementProperty('page');
    },

    previousPage: function() {
      this.decrementProperty('page');
    },
  }
});

App.PostsController = Ember.ArrayController.extend(App.PaginatedListController, {
  actions: {
    // controller specific actions here
  }
});