问题标签 [angular-ui-router-extras]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
66 浏览

angularjs - 无法在 angular-ui-router 的状态下访问视图

我试图链接到一个子状态,但不知道如何让它工作。链接在这里:

这是路线:

然后最终:

这是视图的内容:

我也尝试访问 localhost:8100/#/communitydashboard,但它只是将我重定向到家。我该如何解决。

0 投票
2 回答
636 浏览

javascript - 更改状态时保持同级 ui-views - ui-router

这个问题基于“如何在更改状态时保留同级 ui-views”plunker)。

当我更改主导航(mainNav)中的状态时,我尝试保持视图(内容)不变。

内容只能由子导航设置,并在更改主导航时保留。

即使状态离开,是否有可能在 ui-router 中保留视图?

在更改到另一个状态时发现了 Persist 状态,但它并没有完全解决问题。状态是持久的,但没有考虑在导航到不同状态时保持视图一致。

0 投票
1 回答
267 浏览

angularjs - 将公共参数传递给所有状态 UI 路由器

我是 UI 路由器的新手。我需要将一个全局参数传递给我所有的州。有没有办法在 UI 路由器中配置全局参数?

0 投票
1 回答
179 浏览

angularjs - 角模态(ui-router)和一般模态架构概念

我正在开发一个相当复杂的 AngularJS Web 应用程序,并且一直未能实现满足我要求的工作模式/路由机制。

情况

我的应用程序具有(简化)以下实体:

  • 客户(有 0 个或多个联系人)
  • 订单(只有 1 个客户)
  • 联系人(恰好属于 1 个客户)

在创建新订单期间,可以选择现有客户,也可以创建新客户。在客户的创建过程中,可以选择创建一个新的联系人。

UI/UX 解决方案

我已经研究了几种以“简洁”和移动友好的方式正确表示此功能的方法。首先,我尝试完全远离模态框或弹出窗口,并尝试创建几个 Angular 指令以在页面中动态显示,但这很快就变得太复杂了。新客户的创建存在多个 UI 状态和一些子状态(选项卡),其中包含相当复杂的逻辑。

然后我查看了使用单独的浏览器选项卡并使用 localStorage 在它们之间进行通信。然而,这种方法似乎很脆弱,对用户来说也不是很常见。此外,用户应该继续在新标签中工作直到完成,然后才能返回到上一个标签。使用单独的浏览器选项卡是不可能的。

我看过 Javascript 浏览器弹出窗口,但我也不喜欢那个方向。

从用户的角度来看,我认为最好的方法是使用模态对话框来遵循 UI 流程:

用户界面流程

注意:New Customer 和 New Contact 状态本身也是可以在常规窗口中打开的状态。

我已将 Angular-UI-Router 路由创建为:

  • 新订单:app.orders.new
  • 新客户:app.customers.new
  • 新联系人:app.contacts.new

发展

为了支持多模式架构,我尝试了几件事:

  1. 使用Angular UI 引导模式
  2. 使用UI-Router-Extras方式使用自己构建的模态窗口

要记住的一些重要方面:

  • 我不需要直接 URL 来直接指向模态窗口。URL 可以保持在“新客户”状态。
  • 行为应该是模态的,所以不能在父窗口上工作。
  • 它应该能够依次打开并显示多个状态(例如一个模态中的向导)
  • 以特定顺序打开的多个模态应该以相同的顺序关闭。(后进先出)

1. 使用Angular UI Bootstrap Modal 这种方式看起来很有希望。我创建了一个单独的路由,它使用一些控制器和常规路由的视图:

  • 模态.客户.新
  • Modal.Contacts.New

但不幸的是,我很难在模态中打开更多模态并保持前一个模态的状态。我使用 UI-Router-Extras Sticky States 来保持背景状态。然而,作为 UI-Router-Extras 状态,Sticky States 仅在每个状态都有自己的 ui-view 时才有效。应事先声明 ui-view。这是不可能的,因为理论上用户可以在我的应用程序中打开无限数量的嵌套模式。

2. 使用UI-Router-Extras方式使用自己构建的 Modal 窗口

我尝试使用 UI-Router-Extras 的简单模态示例创建一个简单的模态而不是 Angular UI 模态,如下所示:http ://plnkr.co/edit/qgt0RkEnXDPDTdMJPIfy?p=info

但不幸的是,我遇到了与选项 1 相同的问题。问题是当模式嵌套时,状态和路由变得过于复杂。

解决方案

我真的在为现在最好的方法而苦苦挣扎。我正在考虑显示一个带有 iframe 的模态覆盖窗口,它打开一个单独的 UI-Router 路由,例如:Modal.Customers.New,它只显示应用程序的内容(而不是菜单栏等)。

使用 iframe 时,我可以在父窗口和 iframe 上保留单独的路由和状态信息。我需要执行一些自定义 javascript 来支持将 iframe 缩放为正确的格式,但这是可以接受的。

但它仍然感觉像是一个“被黑”的解决方案。

我很想听听您的解决方案和见解。

0 投票
1 回答
160 浏览

angularjs - 使用 In Resolve 时工厂方法空白

我正在尝试在我的 ui-router 解析中使用工厂。我可以看到我的工厂名称被返回,但是这些方法似乎不存在:

路由器.js

当 console.log'ing 时:

但是我的getDatauseData方法似乎无法供我使用?

0 投票
1 回答
131 浏览

angularjs - ui 路由器动态 URL 问题 - url: '/:id/page1' 不起作用

使用ui路由器时如何创建动态路由,

如果我们定义:

它工作正常,

但是,如果我们尝试先添加动态 ID,然后添加页面名称,则会出现错误,

错误:

如何解决这个问题,谁能帮我解决这个问题?

0 投票
1 回答
455 浏览

angularjs - UI Router Angular JS 中的自定义路由(URL 快捷方式)

我有一些看起来像这样的状态:

问题是:practiceID变量可能很长而且对用户不友好,我想让用户能够创建与练习 ID 相关联的自定义 URL,例如在 Facebook 上,当您创建帐户时,您从个人资料开始像这样的网址:http: //facebook.com/123456789但你可以将其更改为http://facebook.com/whateveryouwant

所以本质上我想完成这样的事情:

我能够允许用户设置他们的unique url但我不知道如何开始设置这样的路由?

0 投票
1 回答
1210 浏览

angularjs - 动态加载 ui-router 状态

成功登录我的应用程序后,我想动态加载用户可用的所有状态api/js。动态加载的状态将始终包含一个抽象状态app.module,它是唯一已知的状态,并且是同一下载中所有其他状态的根。

我的第一种方法是在登录后使用 oc.lazyLoad。它工作正常,但刷新浏览器时不行。然后我尝试在 module.run 中使用 oc.lazyLoad 加载,但它不起作用。

我一直在尝试将 oc.lazyLoad 与来自 ui-router extras 的 futureState 一起使用,但我无法让它工作。

我需要一些关于如何配置$futureStateProvider的帮助,如果它甚至可以做我想做的事。

0 投票
1 回答
519 浏览

angularjs - React-Router 中的自动深度子路由重定向

我最近一直在将一个项目从AngularJS + UI-Router + UI-Router-Extras转换为React + React-Router

我想为 React-Router 带来的 UI-Router-Extras 中更好的功能之一称为
Deep State Redirect。在此功能中,当导航到具有子路由的路由时,应用程序知道将用户重定向到它的最后一个访问过的子路由,或者如果它的子路由还没有被访问过,那么它会重定向到它的第一个子路由。挂号的。

例如,如果加载的路由树如下所示:

并且用户从 route 开始/main/main_sub_2,然后转到/secondary,然后转到/main,他们将被自动重定向到,/main/main_sub_2因为/main/main_sub_2这是最后一次/main访问的子路线。

我知道我可以通过使用
<IndexRedirect to={getLastSubRoute(parentRoute)}>whereparentRoute是父<Route>标签的完整路径在反应路由器中实现这一点,并且getLastSubRoute是不言自明的,但问题是我需要将这样的<IndexRedirect>标签添加到我创建的每条路由中,这不是最优的,因为路由是动态加载的,可能有多达 100 个子路由,并且应用程序的大部分路由将由其他人编写,我不应该依赖他们记住在<Route>他们编写的每个标签下添加该标签.

理想情况下,我应该能够对<Router>React 路由定义中的基本标记应用一些函数或 mixin,以将此功能添加到它下面的所有路由中,但我不确定从哪里开始。我该如何解决这个问题?

0 投票
2 回答
1671 浏览

javascript - UI 路由器 多个状态的相同控制器

在我的 Angular JS 应用程序中,我有 2 个视图 - v1 和 v2 和 1 个控制器 - appCtrl。

我已经如下配置了 UI 路由器

我在 appCtrl 中有 2 个函数 - fv1 和 fv2。

我想在调用路由'/v1'时执行fv1,在调用路由'/v2'时执行fv2。

有人可以建议吗?