2013-02-16 7 views
0

我試圖在我的索引頁中渲染三個額外的outlet's,一切正常,除非一旦我設置了至少一個插座,正常行爲會中斷。在這裏多待明確的是我在做什麼Ember如何添加額外的命名插座來查看而不會影響正常行爲

IndexRoute路線

renderTemplate: function() { 
    this._super(); 
    this.render('header', { into: 'index', outlet: 'header' }); 
    this.render('sidebar', { into: 'index', outlet: 'sidebar' }); 
    this.render('right_side', { into: 'index', outlet: 'right_side' }); 
} 

現在我的路由映射,index是一種資源,它包含內的所有其他路線。我的觀點包含所有outlet的渲染設置和一個未命名的插座,這會導致問題。

如果我沒有明確指出要呈現的內容以及IndexRoute中的哪些內容正常工作,我將我的模板呈現在我的無名插口中,鏈接正常工作,未命名插件獲取正確的內容,但是一旦設置了任何名稱出口,未命名的出口停止獲取任何內容,但我打電話_super()

所以我的問題是如何設置額外的命名插座,而不會干擾同名resource的無名插座的正常工作?

更新

例如 http://jsfiddle.net/drulia/jM6js/

+0

你能爲這個放在一起JSFiddle嗎? – Wildhoney 2013-02-17 00:15:18

+0

已更新的問題與小提琴 – Giedrius 2013-02-17 01:02:09

+0

您的'{{outlet}}都不需要在您的應用程序模板中? – Ben 2013-02-17 02:45:27

回答

1

我真的不知道這個問題是與多個outlets什麼,但我得到了它使用partial輔助工作。

<script type="text/x-handlebars" data-template-name="index"> 
{{#linkTo index/foo}}Go to Foo{{/linkTo}} <br> 
{{#linkTo index/bar}}Go to Bar{{/linkTo}} <hr> 
text inside index template 
<hr> 
{{outlet}} 
{{render "sidebar"}} 
</script> 

這是jsfiddle

更新

的jsfiddle被更新爲使用{{render}}幫手,而不是{{partial}}

如果您使用的是{{partial}}助手,它將使用現有的上下文。如果您需要重新使用模型/控制器,則最好使用{{render}},因爲它會爲您創建新的視圖/控制器/模板環境。那麼你可以使用modelForcontrollerFor掛鉤。

+0

是的,但在這種情況下,側邊欄將不得不與'索引'共享控制器,並且我有三個額外的'出口',這將壓倒我的控制器,我不知道如何設置多個模型爲控制器。或者有沒有辦法爲'部分'視圖設置單獨的控制器? – Giedrius 2013-02-17 18:56:49

+1

@Giedrius那麼你最好使用'{{render}}'而不是'{{partial}}'。 '{{render}}'會給你一個自己的'view/controller/template'上下文。 – 2013-02-17 21:08:28

+0

謝謝,'{{render}}'正是我需要的,我應該知道這一點。 – Giedrius 2013-02-17 21:16:27

相關問題