2015-06-21 67 views
1

我試圖弄清楚如何在異步ufront應用程序的導航欄或網站欄中設置活動鏈接。如何在異步ufront應用程序中設置活動鏈接(navbar)

在我可以加載並通過API調用動態分析它的主(頂層)控制器內,如服務器:

@inject public function init(context:HttpContext) { 
    ufTrace("HomeController::init"); 

    var navStr:String = ""; 
    //getNavbar loads the navbar html snippet and parses the code to set 'active' some tags in relation to the request uri 
    var navbarSurprise = siteApi.getNavbar(context.request.uri); 
    navbarSurprise.handle(function (outcome) { 
     switch (outcome) { 
      case Success(navbarStr): navStr = navbarStr; 
      case Failure(err): navStr = "<h1>Could not load navigation: $err</h1>"; 
     } 
    }); 
    ViewResult.globalValues["navBar"] = navStr; 

} 

但是,這並不在客戶端的URL pushState的上工作。 (navStr將永遠是空的)

的ViewResult.hx(線:126)文檔狀態: 助手(動態功能),可以包含在你的ViewResult也。

難道這是一個地方來處理? 但不幸的是,我找不到任何幫助/示例如何將輔助函數添加到ViewResult。

我也在考慮在自定義的ViewEngine中做這件事。但是這似乎有點像過於複雜的事情。

任何想法,將不勝感激。

+0

其實我認爲***助手(動態功能)***是ViewResult靜態擴展,如.addJsScriptToResult(the.script.js)。雖然有可能改變那裏的反應,但它不是很乾淨,因爲我不得不將這個添加到每個結果中。 – michaPau

回答

2

似乎你正在處理請求時正在服務器上呈現導航欄。

我不喜歡的東西,前段時間通過sipple(另一個模板引擎),但你也可以使用其他引擎(我覺得)好像haXe的模板或erazor等

This issue總結了我如何處理不同的泛音使用stipple

希望它有幫助。

+0

這是否也適用於客戶端的異步調用?也許我錯了,但我的印象是,我的api調用(在一個不太優雅的方式,並沒有在編譯時得到部分)相同的東西。我不能在控制器初始化函數中工作。 – michaPau

+0

是的部分在編譯時加載並在運行時渲染。我不確定你的實現有什麼問題,但是我記得使用erazor很難得到ufront的部分,你可以嘗試切換點,因爲它提供了更好的部分支持。 – TiagoLr

+0

在我的示例中,應用程序只是從不等待我的異步API調用返回的驚喜結果。例如,相同的調用在路由功能內按預期工作;但不在init函數中。可能是它與實際的ufront版本中的小問題有關。!? – michaPau

相關問題