当你点击它的路线时,Ember.js 2触发控制器动作

时间:2016-01-21 12:20:23

标签: javascript ember.js ember-cli

我每次碰到某个控制器/路线时都试图重新绘制图形。还有其他页面,其中输入被更改,并且图形需要在“建模器”页面导航到时重绘。建模器页面上的后续输入更改会导致重绘,但每次导航时,图表最初都会被错误地缩放。因此,当您到达“建模器”页面时,我需要根据所有新输入进行重绘。

export default Ember.Controller.extend({
  calculator: Ember.inject.service(),

  needs: ['modeller'],

  init: function() {
    this.drawCharts();
  },
})

所以init()只在应用程序启动时调用一次,但每当命中“modeller”路径时我都需要调用它。

我已经尝试将其添加到控制器但无济于事:

doSomething: function() {
  console.log("currentPath");
  return;
}.observes('currentPath'),

我试图从路由器触发它:

var Router = Ember.Router.extend({
  location: config.locationType,
  doSomething: function() {
    console.log("didTransition in router");
    this.get('controllers.modeller').init();
    return;
  }.on('didTransition'),
});

...几乎可以工作 - 记录了“路由器中的didTransition”,但我无法引用控制器。它说“this.get(...)未定义”??

任何帮助表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:2)

利用modeller路线中的didTransition挂钩:

actions: {
  didTransition: function() {
    this.controller.drawCharts();
    return true; // Bubble the didTransition event
  }
}