编辑-虽然这是完全有效的(渲染到使用命名插座的前提,视图现在在 Ember 1.1 中已弃用。同样可以通过使用组件来实现
是的,你可以这样做:
您想要做的是在模板中创建一个模态并为其分配一个命名的插座(或创建一个带有插座的模态视图):
在modal.hbs
:
<div class='modal'>
{{outlet "modalContent"}}
</div>
然后我会像这样覆盖你的基本按钮:
App.BasicButton = Em.View.extend({
context: null,
template: Em.Handlebars.compile('<button>Click Me!</button>');
click: function(evt) {
this.get('controller').send('reroute', this.get('context'));
}
});
并在您的模板中设置您的按钮以触发您的模式:
在trigger.hbs
<!-- content and buttons for doing stuff -->
{{View App.BasicButton context='modalContent'}}
最后,你想在你的路由中创建一个方法来处理将特定内容渲染到你的插座中:
App.TriggerRoute = Em.Route.extend({
actions: {
reroute: function(route) {
this.render(route, {into: 'modal', outlet: route});
}
}
});
所以本质上,您将模板(称为“modalContent”)渲染到特定的出口(称为“modalContent”)中,位于模板/视图(称为“modal”)中
您还需要编写一些逻辑来触发模式在元素插入时打开。为此,我将使用视图didInsertElement
中的操作modal
:
App.ModalView = Em.View.extend({
didInsertElement: function() {
this.$.css("display", "block");
//whatever other properties you need to set to get the modal to pop up
}
});