angular ui-路由器 1 中的 DeepStateRedirect - 如何重置深层状态?

DeepStateRedirect in angular ui-router 1 - how to reset the deep state?

我正在使用 angularJS 并迁移到 ui-router v1。我正在尝试让深度状态重定向像以前版本的 ui-router.

一样工作

我已经在我的配置模块中成功实施了 DSRPlugin,深度状态重定向正在触发并按预期工作。但是,我无法重置深层状态。我需要能够在单击按钮时重置深度状态,这意味着我组件中的逻辑。以前我可以将 $deepStateRedirect 注入我的控制器并简单地调用 $deepStateRedirect.reset({}),但我不再能够注入 $deepStateRedirect。如何访问 ui-router v 1 中的重置方法?

我还注意到,当使用 DSR 作为配置对象时,您可以指定一个函数来确定是否发生重定向。我也可以使用它来确定是否进行重定向,但缺少文档。它表明我应该 return 一个真值来进行重定向或一个假值来防止重定向。在测试中,returning true 或 false 只会导致转换错误:"i.state is not a function".

我没有使用 build 进程,只是简单的脚本包含。 任何人对如何通过上述任一方法使这项工作有任何想法?

这可能不是进行重置的最佳做法,但我在注销各种 ui-路由器对象后找到了解决方案。

在您的控制器中,您必须注入 $uiRouter 对象。然后,您可以将变量设置为 $uiRouter._plugins["deep-state-redirect"]。 reset() 和其他方法在插件的原型上可用。

然后您可以使用该对象并调用这些方法,就像它在以前版本中注入 $deepStateRedirect 时的工作方式一样。

var $deepStateRedirect = $uiRouter._plugins["deep-state-redirect"];
$deepStateRedirect.reset({});