2015-11-04 204 views
3

我是SailsJS中的新成員,所以我有一個關於渲染局部視圖的問題。Sails js渲染局部視圖

我來自.NET世界,ASP.NET MVC中的部分視圖比sails更聰明。在.NET MVC中,我可以提供一些控制器作爲局部視圖路徑,並且該控制器將被執行,並且局部視圖將與該控制器數據一起呈現。

例如,我想在我的網站的角落顯示一些帳戶信息。因此,在.NET中,我可以調用局部視圖,提供控制器路徑,此控制器將查詢帳戶信息,將其提供給局部視圖,然後將此結果插入主視圖。 在帆中,我可以調用部分視圖,但部分視圖的所有數據(本地)將從主視圖中推送到那裏。所以我必須將每個控制器中的帳戶信息放入應用程序中?

我該如何解決這個問題? 在其他問題,我發現我可以從req.session採取用戶名,但它並不能解決所有情況。如何在頁腳中顯示三個隨機主題,例如?

回答

0

我認爲你正在尋找有關部分視圖的錯誤地方。 這是一個前端問題。我用於這種局部視圖的是Angular UI-router。其實我不確定是否在你的解決方案的範圍內使用angular,所以我會保持這個簡短。如果您覺得我的方法很有用,可以對其進行評論,然後我會進一步詳細說明如何執行此操作。

0

取決於您使用的模板引擎。

使用ejs,您可以使用<%- include('someview') %><%- include('someview', { mydata: { foo: bar} }) %> 後者允許使用差異數據多次調用包含文件。例如。 <%- include('someview', { mydata: foo }) %>將foo(從本地)複製到mydata項。這將被添加到當地人,所以所有其他當地人也可用。

至於提供的實際數據,您可以使用sails服務。只需將數據添加到res.locals.myKeyForTheInclude即可。

您將不得不每次致電該服務。 但您可以將它作爲中間件添加到config/http中。

middleware: { 
    myFoo: myService.myFunc, 
    order: [ 
    ... 
    'myFoo', // before router 
    'router', 
    ... 
], 

剩下的就是每個模板都需要include。 你不能避免這種情況,只有模板知道包含應該在哪裏。 但是,如果您使用佈局,也許它適合佈局。