![](/img/trans.png)
[英]In Ember.js, how to reveal Bootstrap modal after rendering into outlet
[英]Ember.js Rendering outlet as a modal window
我正在嘗試渲染一個模態。 為此我使用{{outlet modalOutlet}}
創建了一個自定義插座我的應用程序模板有兩個插座,默認插座和modalOutlet。 但是,當模態模板呈現為{{outlet modalOutlet}}
,我的默認{{outlet}}
變為空。
如何更改它,以便默認{{outlet}}不會更改,因此我實際上可以將{{outlet modalOutlet}}
渲染為模態窗口,或作為邊欄作為布局的一部分
我不確定這是由於我的代碼,還是我缺少的renderTemplate()
方法。 我的代碼的jsFiddle就在這里 。
// Router
App.Router.map(function(){
this.route('contributors');
this.route('contributor', {path: '/contributors/:contributor_id'});
});
App.ContributorsRoute = Ember.Route.extend({
model: function() {
return App.Contributor.all();
},
});
App.ContributorRoute = Ember.Route.extend({
renderTemplate: function() {
this.render('contributor', {
outlet: 'modalOutlet'
});
}
});
<script type="text/x-handlebars" data-template-name="application">
<nav>
{{#linkTo "index"}}Home{{/linkTo}}
{{#linkTo "contributors"}}Contributors{{/linkTo}}
</nav>
<div style='padding:5px;margin:5px;border:1px dotted red;'>
Default Outlet
{{outlet}}
</div>
<div style='padding:5px;margin:5px;border:1px dotted blue;'>
modalOutlet
{{outlet modalOutlet}}
</div>
</script>
您還必須渲染contributors
模板,因為當您轉換為兄弟路徑時,默認插座會被清除。
App.ContributorRoute = Ember.Route.extend({
renderTemplate: function() {
this.render('contributors');
this.render('contributor', {
outlet: 'modalOutlet'
});
}
});
但是,如果您像這樣嵌套路線,則可以避免這種情況:
App.Router.map(function(){
this.resource('contributors', function() {
this.route('show', {path: ':contributor_id'});
});
});
...並調整應用程序的其余部分以匹配新結構。 在這種情況下,您需要使用into
選項指定modalOutlet
所在的位置(在本例中為'application'
)
問題是您的路由結構沒有嵌套,一旦您嵌套路由,您將需要指定包含模態出口的路由。
發生的事情是你渲染
申請 - >貢獻者
顯示您的列表,但是當您單擊現在正在渲染的鏈接時
應用程序 - >貢獻者
並刪除了Contributor
模板。
如果您嵌套路線,如下所示:
申請 - >貢獻者 - >貢獻者
然后,您仍然會有顯示列表的Contributors
模板。
//Router
App.Router.map(function(){
this.resource('contributors', function() {
this.resource('contributor', {path: '/:contributor_id'});
});
});
//Route
App.ContributorRoute = Ember.Route.extend({
renderTemplate: function() {
this.render('contributor', {
into: 'application',
outlet: 'modalOutlet'
});
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.