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

Ember.js 2 trigger controller action when you hit it's route

本文关键字:控制器 当你 js Ember      更新时间:2023-09-26

每次我碰到某个控制器/路由时,我都会尝试重新绘制图表。还有其他页面的输入被更改,当导航到"建模者"页面时,图形需要重新绘制。建模器页面上的后续输入更改会导致重绘,但每次导航到图形时,图形最初都会缩放不正确。因此,我需要在您到达"建模器"页面的那一刻根据所有新输入进行重绘。

export default Ember.Controller.extend({
  calculator: Ember.inject.service(),
  needs: ['modeller'],
  init: function() {
    this.drawCharts();
  },
})

所以 init() 只在应用程序启动时被调用一次,但是每当遇到"建模者"路线时,我需要一些东西来调用它。

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

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(...未定义"??

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

利用modeller路由中的didTransition钩子:

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