【问题标题】:Ember.js 2 trigger controller action when you hit it's routeEmber.js 2 当你击中它的路由时触发控制器动作
【发布时间】:2016-04-27 16:39:26
【问题描述】:

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

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(...) is undefined”??

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

【问题讨论】:

    标签: javascript ember.js ember-cli


    【解决方案1】:

    modeller路由中利用didTransition钩子:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 2012-07-25
      • 2015-02-24
      相关资源
      最近更新 更多