代码之家  ›  专栏  ›  技术社区  ›  mrSpear

angular ui router 1中的DeepStateRedirect-如何重置深度状态?

  •  1
  • mrSpear  · 技术社区  · 8 年前

    我正在使用angularJS并迁移到ui路由器v1。我试图让深度状态重定向像以前版本的ui路由器一样工作。

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

    我还注意到,当使用DSR作为配置对象时,可以指定一个函数来确定是否发生重定向。我也可以用它来决定是否进行重定向,但缺少文档。它表明我应该返回一个truthy值来执行重定向,或者返回一个false值来防止重定向。在测试中,返回true或false只会导致转换错误:“i.state不是函数”。

    我没有使用构建过程,只是简单的脚本包含。 有人对如何通过上述两种方法来实现这一点有什么想法吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   mrSpear    8 年前

    这可能不是重置的最佳实践方式,但我在注销各种ui路由器对象后找到了一个解决方案。

    在控制器内部,必须注入$uiRouter对象。然后,可以将变量设置为$uiRouter_插件[“深度状态重定向”]。重置()和其他方法在插件的原型上可用。

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

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