創建新應用程序時,兩個視圖是main.html和index.html。主從未明確地呈現,它擴展爲如何將變量傳遞給擴展的視圖,而不是顯式調用?
#{extends 'main.html' /}
我如何通過一個變量視圖(main.html中),當其只能從另一種觀點(的index.html)擴展?
創建新應用程序時,兩個視圖是main.html和index.html。主從未明確地呈現,它擴展爲如何將變量傳遞給擴展的視圖,而不是顯式調用?
#{extends 'main.html' /}
我如何通過一個變量視圖(main.html中),當其只能從另一種觀點(的index.html)擴展?
如果它傳遞給渲染方法,它將按照正常情況提供。整個視圖(包括擴展和包含)由Groovy模板引擎呈現。
但是,對於通常在每個視圖中擴展的main.html
,最佳選項是始終使用@Before
註釋將其添加到renderArgs
映射中,如下所示。這確保它始終可用,並且您不要重複自己(DRY)。
@Before
private void setup() {
renderArgs.put("somekey", "somevalue");
}
這樣,你不需要somekey傳遞到render方法上的每個渲染調用。
然後,在您的main.html
中,只需使用標準方法$somekey
就可以訪問somekey
。
Codemwnci給出瞭如何將變量傳遞給控制器內部佈局模板的解決方案。下面是如何從普通視圖變量傳遞到佈局視圖:
在您的index.html,你可以這樣做:
#{set title:'My title'/}
而在你的main.html中,你可以「搞定」 index.html中設置變量:
<h1>#{get 'title'/}</h1>
如果您正在使用Rythm或Japid模板引擎,那麼你可以傳遞變量直接在extends
聲明
在節奏模板引擎,假設你的main.html中是:
@args String title
...
<h1>@title</h1>
...
您可以使用下面的語句延長index.html的主模板:
@extends(main, "my title")
謝謝,制定出很好。 – theTuxRacer