我希望在转换到路线后打开路线中的模态。 我的猜测是使用" 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。