我正在使用angularJS并迁移到ui-router v1。我正在尝试使用以前版本的ui-router中的深度状态重定向。
我已经在配置模块中成功实现了DSRPlugin,深度状态重定向正在按预期启动和工作。但是,我无法重置深度状态。我需要能够在按钮单击时重置深度状态,这意味着我的组件中的逻辑。以前我可以将$ deepStateRedirect注入我的控制器并简单地调用$ deepStateRedirect.reset({}),但我不再能够注入$ deepStateRedirect。如何在ui-router v 1中访问reset方法?
我还注意到,当使用DSR作为配置对象时,您可以指定一个函数来确定是否发生重定向。我也可以使用它来确定是否进行重定向,但缺少文档。它表明我应该返回一个truthy值来执行重定向或falsey值以防止重定向。在测试中,返回true或false只会导致转换错误:“i.state不是函数”。
我没有使用构建过程,只是简单的脚本包含。 任何人都有任何想法如何通过上述任何一种方法来完成这项工作?
答案 0 :(得分:1)
这可能不是执行重置的最佳实践方法,但我在注销各种ui-router对象后找到了解决方案。
在控制器内部,您必须注入$ uiRouter对象。然后,您可以将变量设置为$ uiRouter._plugins [" deep-state-redirect"]。插件原型上提供了reset()和其他方法。
然后,您可以在注入$ deepStateRedirect时使用该对象并调用这些方法,类似于以前版本中的工作方式。
void api_func(has_dot_size_ref v) {
// This prints just the size, but in the actual API, we would be
// doing more complex things.
std::cout << v.size() << '\n';
}