2015-06-21 24 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

相关问题