如何使用其他控制器和组件的组件方法

时间:2014-08-13 08:28:27

标签: ember.js

我在perRoundROI,perRoundROIWithCoverage中有BarChartComponent个方法,

如何与他人分享这两个功能?

换句话说,将两个方法移到更高级别,以便其他组件可以调用它。

如何重构它?

重构后如何调用2个方法

App.ToolsController = Ember.ArrayController.extend({
  ....  
});

App.BarChartComponent = Ember.Component.extend({

  perRoundROI:function(d){
    return d.manualHours - d.autoHours;
  },
  perRoundROIWithCoverage:function(d){
    return (d.coverageerage * d.manualHours) - d.autoHours;
  },

  get_tool_data: function(d, with_coverage){
    call perRoundROI
    call perRoundROIWithCoverage
  },
  ...
});

1 个答案:

答案 0 :(得分:1)

只需创建一个Ember.Mixin

每个需要其方法的人只是扩展它:

App.ROICalculator = Ember.Mixin.create({
  perRoundROI: function(d) { /* code omitted */ },
  perRoundROIWithCoverage: function(d) { /* code omitted */ }
});

App.ToolsController = Ember.ArrayController.extend(App.ROICalculator, { 
  /* code omitted */ 
});

App.BarChartComponent = Ember.Component.extend(App.ROICalculator, {
  /* code omitted */
});