Javascript 在Ember.js中,如何在渲染到outlet后显示引导模式
在我的Ember.js应用程序中,我希望在调用OpenModel操作时从ApplicationRoute打开引导模式 我将此作为我的应用程序路径: 现在我的问题是活动模式没有打开,可能是因为它在渲染调用之后不存在于DOM中 我该如何解决这个问题 演示:在renderTemplate Ember中执行。路由钩子方法Javascript 在Ember.js中,如何在渲染到outlet后显示引导模式,javascript,twitter-bootstrap,ember.js,Javascript,Twitter Bootstrap,Ember.js,在我的Ember.js应用程序中,我希望在调用OpenModel操作时从ApplicationRoute打开引导模式 我将此作为我的应用程序路径: 现在我的问题是活动模式没有打开,可能是因为它在渲染调用之后不存在于DOM中 我该如何解决这个问题 演示:在renderTemplate Ember中执行。路由钩子方法 renderTemplate: function() { $('active-modal').modal(); } 在本文中找到了一个解决方案: 这是一个更优雅的解决方案,不
renderTemplate: function() {
$('active-modal').modal();
}
在本文中找到了一个解决方案: 这是一个更优雅的解决方案,不需要重新打开Ember.View,但它可以在需要时适用于所有视图 仍然使用相同的应用程序路径: 但现在我们已经覆盖了Ember.View的didInsertElement来安排函数调用:
Em.View.reopen({
didInsertElement: function() {
this._super();
Ember.run.scheduleOnce('afterRender', this, this.afterRenderEvent);
}
});
然后我明确定义了ModalView,并在此基础上创建了一个afterRenderEvent函数,用于查找.modal DOM节点,瞧
App.ModalView = Em.View.extend({
afterRenderEvent: function() {
this.$('.modal').modal();
}
});
现场观看:
编辑
必须手动销毁视图,否则模式将不会再次出现:
App.ModalView = Em.View.extend({
var this = self;
afterRenderEvent: function() {
this.$('.modal')
.on('hidden.bs.modal', function() {
self.triggerAction({
action: 'closeModal'
});
})
.modal();
}
});
编辑2
有一个更好的解决方案,这在使用组件创建模态时是必需的。我已经更新了上面的代码片段。采用哪种方式?你能更新你建议的jsbin吗?无论你打开哪个路径。加载Dom后会调用Rendertemplate钩子,因此jquery将拾取它。正如我所料,它会破坏呈现:您应该阅读以下内容:@NicholasJohn16谢谢,我已经这样做了。他们的示例显示了渲染时的模态。然而,当DOM节点存在时,引导模式需要以编程方式打开。
App.ModalView = Em.View.extend({
afterRenderEvent: function() {
this.$('.modal').modal();
}
});
App.ModalView = Em.View.extend({
var this = self;
afterRenderEvent: function() {
this.$('.modal')
.on('hidden.bs.modal', function() {
self.triggerAction({
action: 'closeModal'
});
})
.modal();
}
});