angularjs:选项卡式视图设计问题

Posted

技术标签:

【中文标题】angularjs:选项卡式视图设计问题【英文标题】:angularjs: tabbed view design issue 【发布时间】:2013-04-21 01:23:30 【问题描述】:

[编辑]

与Complex nesting of partials and templates类似的问题

到目前为止,使用 Angular-UI 状态解决方案更好还是我应该坚持使用 ng-includes ?


到目前为止,我的 AngularJS 应用程序中的每个 URL 都有一个视图。我需要构建一个新视图,它应该有 3 个选项卡,但我在试图弄清楚我将如何设计视图时遇到了麻烦——即架构方面的问题。

请注意,这 3 个选项卡后面的业务模型对象是同一个。

第一个选项卡用于查看和编辑业务对象上的数据。所以这已经是第一个选项卡中的两个“视图”了。

第二个选项卡用于查看显示来自业务对象子集合的数据的分页表。

第三个选项卡与第二个选项卡执行相同的操作,但用于另一个子集合。

显然,我不想一次加载整个业务对象。只有当用户导航到第二个或第三个选项卡时,我才会加载集合。

我现在主要关心的是如何组织视图? AngularJS 有这个限制,每页只有 1 个视图。

另外,我需要处理浏览器历史记录,因此在选择选项卡时 URL 必须更改,但我必须重新加载任何数据(即我不能重新加载控制器)。

任何提示将不胜感激。

【问题讨论】:

您可以使用 ng-show、ng-hide、ng-include 等来显示基于某些变量的隐藏内容。这些可以在路由更改时在主控制器上设置。关于控制器,你可以让控制器重新加载,只需添加缓存你的对象,如果它们被加载就不会再次加载它们。 视图怎么样?编辑表单的 html 已经非常大了。如果我有更多(即选项卡及其内容),那最终会变得非常大。如何分离 3 个选项卡的 html ? 把每一个放在自己的html部分文件中。将 ng-include 与 url 一起使用。 ng-include 可以与 ng-show / ng-hide 一起使用。 好吧,不知何故,必须手动实现所有这些逻辑似乎有点奇怪。使用路由和视图更容易处理。可惜每页不允许多次查看 我已经更新了我原来的帖子,我现在想知道我是否应该使用 Angular-UI 状态解决方案?我不愿意使用 3rd 方解决方案,但另一方面 AngularJS 路由系统似乎是它的致命弱点 【参考方案1】:

为了记录,我最终使用了 ui-router 及其状态管理,这太棒了。我花了一些时间来理解这些概念并将其付诸实践,但我设法毫不费力地构建了一组非常复杂的布局!

【讨论】:

我正在遭受同样的“进入障碍”;我很难理解无法通过本机路由真正重用视图,而不是通过在每个可能具有同样由 Angular 驱动的通用导航方案的模板上调用 ng-include 来违反 DRY。

以上是关于angularjs:选项卡式视图设计问题的主要内容,如果未能解决你的问题,请参考以下文章

我有一个选项卡式视图,如何触发视图运行一些代码,视图由选项卡式视图激活?

如何在选项卡式应用程序上加载另一个视图控制器而不丢失选项卡

如何在 HTML 中制作选项卡式视图?

使用 Core Data 的选项卡式应用程序,每个选项卡上都有不同的主从表视图

在选项卡式视图应用程序中滑动手势

如何在保留选项卡栏的同时将子视图控制器添加到选项卡式视图控制器?