angularjs 深度状态重定向在角ui路由器1 -如何重置深度状态?

xdnvmnnf  于 2023-01-08  发布在  Angular
关注(0)|答案(2)|浏览(119)

我正在使用angularJS并迁移到ui-router v1。我试图让深层状态重定向像以前版本的ui-router一样工作。
我已经成功地在我的配置模块中实现了DSRPlugin,并且深层状态重定向正在激发并按预期工作。但是,我无法重置深层状态。我需要能够在单击按钮时重置深层状态,这意味着我的组件中存在逻辑。以前,我可以将$deepStateRedirect注入到我的控制器中,并简单地调用$deepStateRedirect。reset({}),但我无法再注入$deepStateRedirect。如何访问ui-router v1中的reset方法?
我还注意到,当使用DSR作为配置对象时,您可以指定一个函数来确定是否发生重定向。我也可以使用它来确定是否进行重定向,但缺少文档。它显示我应该返回一个truthy值来进行重定向,或者返回一个falsey值来阻止重定向。在测试中,返回true或false只会导致转换错误:“i.状态不是函数”。
我没有使用构建过程,只是普通脚本包含。任何人都有任何想法,如何使这一工作通过上述方法之一?

1sbrub3j

1sbrub3j1#

这可能不是重置的最佳实践方式,但我在注销各种ui路由器对象后找到了一个解决方案。
在你的控制器中你必须注入$uiRouter对象。然后,你可以设置一个变量为$uiRouter._plugins[“deep-state-redirect”]。reset()和其他方法在插件的原型中可用。
然后,您可以使用该对象并调用这些方法,类似于它在以前版本中注入$deepStateRedirect时的工作方式。

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

nwnhqdif2#

我只在源代码和文档中发现了这一点:https://ui-router.github.io/ng1/docs/latest/classes/core.uirouter.html#getplugin
更正确的方法是使用UIRouter#getPlugin(pluginName),即

var $deepStateRedirect = $uiRouter.getPlugin('deep-state-redirect');
$deepStateRedirect.reset(...);

相关问题