Angular-ui 路由器同时获得两个活动状态

2024-02-17

我需要并行使用两种状态,一种用于我的页面,另一种用于具有多个子状态的模式。 现在调用模态状态将清除我的页面,因为页面状态发生了变化。

创建我的页面的子状态子级不是解决方案,因为模式将在多个页面上使用。

Example:

$stateProvider
.state('user', {}) // page
.state('bookshelf', {}) // page
.state('books', {}) // modal
.state('books.read', {}) // sub state of modal

所以如果我在user并打开我的模式,然后状态将更改为books,我的模态将具有内容,但页面内容将被擦除。

我如何解决它?


我相信目前 UI.Router 无法实现您想要的方式。你所描述的是一个模态成分(理想情况下,可以将其编写为指令),它独立于主状态来跟踪其状态。

思考这个问题的方法是,UI.Router 通过创建状态树来工作。在任何给定时间,您只能看到树的一个分支。您可以深入分支(即:book, book.open, book.open.checked),但你不能同时出现在两个地方。

上述问题的另一个问题是如何将两个不同树的状态序列化到一个 url 中?并不是说做不到,只是一个很难解决的问题。

检查这些问题:

  • https://github.com/angular-ui/ui-router/issues/119 https://github.com/angular-ui/ui-router/issues/119
  • https://github.com/angular-ui/ui-router/issues/384 https://github.com/angular-ui/ui-router/issues/384
  • https://github.com/angular-ui/ui-router/issues/475 https://github.com/angular-ui/ui-router/issues/475

另请查看这些存储库,它们可能会进一步解决问题。

  • https://github.com/afterglowtech/angular-detour https://github.com/afterglowtech/angular-detour
  • https://github.com/stu-salsbury/angular-couch-potato https://github.com/stu-salsbury/angular-couch-potato

至于解决您眼前的问题,我认为“最简单”的方法是放弃控制状态配置中模态的状态。

相反,我会添加某种根或抽象状态,然后跟踪模式是否在那里打开。然后,您可以使用事件在控制器之间进行通信此处显示 http://jsbin.com/donisogi/3/edit。注:有性能影响 https://github.com/angular/angular.js/issues/4574与听$rootScope,所以一定要研究这些。然而(有人随时纠正我),这里的实现没有这些问题,因为AppCtrl永远不会被摧毁。


2015 年 1 月 15 日 编辑

事实证明这是一个非常流行的用例,UI Router 的核心贡献者之一维护了一个名为的插件/附加组件UI 路由器附加功能 https://github.com/christopherthielen/ui-router-extras

它还包括用于延迟加载的实用程序,称为“未来状态”,这非常有帮助。

话虽这么说,我希望花时间研究的一个功能是维护 URL(或者可能是本地存储)内的所有状态并允许可重用​​状态“组件”。后者也在 UI Router 路线图中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular-ui 路由器同时获得两个活动状态 的相关文章

随机推荐

  • Conda 报告 PackagesNotFoundError: python=3.1 for reticulate 环境

    我正在尝试在 R 中使用 python 包 但我不断收到相同的错误 ImportError cannot import name read csv from pandas unknown location 我也不能使用 py install
  • 尝试改进 haskell 中当前处理列表的丑陋代码

    我正在尝试在 Haskell 中实现一个函数 该函数将采用任意整数列表xs和一个整数k 并返回一组列表k在所有可能的位置 例如 对于一个xs 0 1 and k 2 我们会有 myFunction 0 1 2 2 0 1 0 2 1 0 1
  • 作为配置属性的不可变类型

    是否可以使用不可变类型作为 NET 配置 API 的配置属性 假设我有一个名为 MyClass 的不可变类型 public class ImmutableClass private readonly int value public Imm
  • 弹性盒| Flex 项目被推出包含 div (屏幕外)

    我正在使用弹性盒布局 https css tricks com snippets css a guide to flexbox 设置过去任务列表的样式 任务描述和时间的长度总是变化很大 一切看起来都很棒 直到输入足够长的任务描述以换行到第二
  • 查找嵌套映射中特定键的值

    在 Clojure 中 如何找到可能位于嵌套映射结构深处的键的值 例如 def m a b b c c d e e f f find nested m f gt f Clojure 提供tree seq http conj io store
  • Firebase 中一个应用程序的多个项目:如何指定 Android 包名称

    我已经在生产环境中设置了 Firebase 项目 我想为我的 firebase 应用程序创建一个开发环境 我看到有很多关于此的文档 我需要根据文档获取 google services json 要获取 google services jso
  • 客户端 (iOS) 上的 Core Data 缓存来自服务器的数据策略

    我编写了许多与后端通信的 iOS 应用程序 几乎每次 我都使用 HTTP 缓存来缓存查询并将响应数据 JSON 解析为 Objective C 对象 对于这个新项目 我想知道核心数据方法是否有意义 这是我的想法 iOS 客户端向服务器发出请
  • 如何在不创建新用户的情况下使用电话验证

    嗨 我现在正在使用本机反应 我一直面临这个问题 我想使用电话验证而不创建新用户 但我找不到我想要的东西 我尝试使用 npm react native firebase auth 和 firebase auth 我找不到它 我非常感谢你的帮助
  • 连体网络显示 ValueError

    我正在使用 Siamese 网络来实现具有不同域的 2000 个功能 我想训练相似的特征对并测试不同的特征对 当我尝试拟合模型时遇到值错误 def get siamese conv unit input encoder models Seq
  • 如何使用 jQuery / Javascript 运行浏览器命令?

    我有一页 HTML 格式 有两个按钮 保存和打印 当用户单击 打印 时 它应该打印页面并当用户单击 保存 页面时 应打开该页面的 另存为 框 首选 Javascript jQuery 解决方案 对于打印 您可以使用window print
  • 使用对象检测算法进行 SageMaker 托管 Spot 训练

    我正在尝试使用新的托管点训练功能从现有模型开始训练对象检测模型 创建估计器时使用的参数如下 od model sagemaker estimator Estimator get image uri sagemaker Session bot
  • XHTML 合规性毫无意义吗?

    我现在正在构建一个网站 到目前为止 我已经痛苦地强制所有内容都兼容 并且它在浏览器中看起来几乎相同 不过 我开始实现一些第三方 免费的 javascript 它们可以执行添加属性等操作 例如 order 2 我可以解决这个问题 但这很痛苦
  • Python:在巨大的文本中替换单词

    我有一个巨大的文本和一个大约 10K 的单词列表 Python 中用其他单词替换文本中所有单词的最快方法是什么 编辑 文本大小 gt 1Gb 文本是人工编写的 并且 极度标记化 任何字母数字字符和任何其他单个符号都被分割成新的标记 单词数
  • 带节点的 OpenVPN,它是如何工作的?

    我可以使用以下 openVPN 命令轻松从终端连接到 VPN openvpn config conf ovpn 我需要使用 Javascript 连接到同一个 VPN 用于 selenium 测试 我已经安装了openvpn客户端与 NPM
  • 在可访问性方面, 相同吗?

    img src srcpath alt img src srcpath alt 也就是说 这些都被视为图像的空值吗alt文本 或者您必须确保alt 存在 You should使用alt 属性 空 alt 属性的每个示例为图像提供替代文本的规
  • heroku 错误:编译的 slug 大小:对于 Puppeteer 来说太大

    我的应用程序正在本地主机上运行 但是当我在heroku上部署时 puppeteer应用程序需要这个模块https github com jontewks puppeteer heroku buildpack https github com
  • Chrome 历史记录错误可能 - 执行 PRG,并且当再次导航到相同表单时 - 没有添加历史记录条目

    仅在 Chrome 中才会出现奇怪的后退按钮行为 我有两个页面 网格和表单场景 1 当从网格导航到表单时 一切都很好 网格被添加到历史记录中 2 当表单通过post发送到服务器时 我使用RedirectToAction再次重定向 302 到
  • 是否可以通过脚本禁用 Firefox JavaScript JIT?

    我们的网站有一个相当复杂的 JS 应用程序 该应用程序在最新的 Firefox 10 版本中失败 这是由于 JS 解释器中的一个错误导致变量返回 NULL 而实际上它们显然不是这样 此错误仅在 JIT 编译器处于活动状态时发生 而不是在禁用
  • 如何保持用户控件的纵横比?

    有谁知道如何保持 UserControl 的高 宽比 1 1 吗 例如 如果高度 gt 宽度 则宽度和高度将具有相同的尺寸 反之亦然 我不确定这是否有效 但是如果您为SizeChanged http msdn microsoft com e
  • Angular-ui 路由器同时获得两个活动状态

    我需要并行使用两种状态 一种用于我的页面 另一种用于具有多个子状态的模式 现在调用模态状态将清除我的页面 因为页面状态发生了变化 创建我的页面的子状态子级不是解决方案 因为模式将在多个页面上使用 Example stateProvider