ember route事件didTransition计时

时间:2015-06-29 15:21:45

标签: javascript ember.js

我希望在转换到路线后打开路线中的模态。 我的猜测是使用" didTransition"事件。在被调用的方法(util)中,我引用了一个Ember.View对象。

我的路线行动:

actions: {
  openModal: modal.open,
  closeModal: modal.close,
  toggleModal: modal.toggle,

  didTransition: function() {
    this.send('openModal', 'choose');
  }
}

问题在于使用:

didTransition: function() {
    this.send('openModal', 'choose');
}

不起作用(因为视图对象未定义,请参见utils中的更多内容),但使用:

didTransition: function() {
    setTimeout(function() {
        self.send('openModal', 'choose');
    }, 0);
}

确实有效。

为什么它不适用于标准通话?我想这是同步问题。

utils看起来如下:

import Ember from 'ember';

export default {
  open: function(id) {
    console.log('utils open');
    var modal = Ember.View.views[id];

    // test output for debugging
    console.log(modal);

    modal.send('open');
  },
  close: function(id) {
    var modal = Ember.View.views[id];
    modal.send('close');
  },
  toggle: function(id) {
    var modal = Ember.View.views[id];
    modal.send('toggle');
  }
};

我错过了什么或者有更好的方法吗? 我使用的是ember.js 1.12.0。

0 个答案:

没有答案