我刚开始一个新项目。我正在构建一个“具有本机感觉”的Web应用程序,它将在全屏浏览器中的远程控制设备上运行(没有地址栏,固定分辨率)。 UI基本上由多个全屏视图组成。 AngularJS目前是首选武器,原因多种多样。我一直在尝试'ui-router'及其'状态'来构建不同的视图。例如:
/#/desktop
/#/menu
/#/videoStore/posterView
/#/videoStore/listView
我非常喜欢每个视图都有一个模板,一个控制器和一个URL。切换视图时页面不重新加载的事实是至关重要的。但是,有一些我缺乏的东西。
双缓冲
我希望能够在转换到之前准备下一个状态/视图。 ui-router 提供了一系列不的活动。在onEnter
构建之前,$stateChangeStart
,$stateChangeSuccess
和state/view controller
都会被调用。我宁愿在转换之前将这些事件称为 on 控制器。例如,onStart
首次启动时,onResume
恢复。
历史记录行为
每次进入状态时似乎都会重建状态,这意味着模板会再次添加到DOM中并实例化一个新的控制器。这是不必要的,应该会破坏性能。离开videoStore时无需重新构建菜单。事实上,我希望能够完全相同,重点关注子文件夹中的相同项目,而不必重新创建它。
Keyhandling
我还没弄清楚如何确保按键转到正确的状态/视图或子视图。我正在考虑向正文添加一个监听器,然后将密钥发送到当前作用域。虽然我不认为这样做会因为在一个州内有多个观点时哪个范围是“活跃的”的不确定性。状态/视图控制器上的某种onFocus
事件会很棒。此外,除非遍历$$(私有)字段,否则似乎无法从angular获取“活动”范围。
好的。谢谢你的阅读。
以下是我的问题:
ui-router
“凑合”?我只评估了两天,可能错过了很多。ui-router
的有价值的Angularjs替代品吗?答案 0 :(得分:2)
你应该对ui-router很好。对于列出的大多数问题,您似乎只需要最小化您在控制器中执行的代码量并将其移至工厂/服务/提供商。通过这种方式,您可以更严格地控制数据的获取方式。
关于DOM,如果你正确使用嵌套状态,那么在状态之间转换时你实际上不应该重新加载导航或其他部分。
最后一点键盘处理只是一个难题,无论底层框架是什么。您可以使用更改焦点的指令进行检查(如果没有任何可用的内容可以搜索,那么请学会自己动手,假设此处tabindex不够好)。
就我所见,ngRoute或uiRouter是您的选择,就客户端路由而言,uiRouter功能更丰富。
关于是否有“更好”的框架可用,主要基于意见(主观)或不知道参数的问题我们可以判断技术不适合StackOverflow。