使用 $window 配置 AngularJS 路由到深层路径

2023-12-10

我有一个 Rails 应用程序,其中有一些复杂的路由。我的 Angular 应用程序存在于深层 URL 中,例如 /quizzes/1

我希望通过将 $window 注入到我的路由配置中,然后嗅探 $window.location.pathName 来做到这一点。这似乎不可能,因为应用程序在此阶段抛出“未知提供者:来自 myApp 的 $window”。

有没有最佳实践方法可以用 Angular 来处理这个问题?我想这样做的原因是当应用程序位于深层目录中时使用 HTML5 模式。

这是我所希望的一个例子,http://jsfiddle.net/UwhWN/。我意识到如果这是唯一的选择,我可以在程序中使用 window.location.pathname 。

HTML:

<div ng-app="myApp"></div>

JS:

var app = angular.module('myApp', [])

  app.config([

    '$window', '$routeProvider', '$locationProvider',

    function($window, $routeProvider, $locationProvider) {

        var path = $window.location.pathname

       // Coming Soon
       // $locationProvider.html5Mode(true)

      $routeProvider
        .when(path + '/start', {
            controller: 'splashScreenController',
            templateUrl: 'partials/splash-screen.html'
        })

        .when(path + '/question/:id', {
            controller: 'questionController',
            templateUrl: 'partials/question-loader.html'
        })

        .otherwise({
          redirectTo: path + '/start'
        })
  }])

只有常量和提供程序可以注入到配置块中。 $window 无法注入到您的配置块中,因为 $window 是一项服务。

From 角度文档:

配置块- 在提供商注册和配置阶段执行。只有提供者和常量可以注入到配置块中。这是为了防止服务在完全配置之前意外实例化。

而且,无论如何你都不需要 $window 服务。只需使用<base> tag:

<base href="/quizzes/1/" />

并保持你的路线相对于它。

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

使用 $window 配置 AngularJS 路由到深层路径 的相关文章

随机推荐

  • Python不断覆盖先前绘图上的历史记录,但不将其保存为所需的绘图

    我正在保存两个单独的图形 每个图形应包含 2 个图 问题是第一个图没问题 但第二个图不会在新图上被覆盖 而是在前一个图上被覆盖 但在保存的图中 我只找到其中 一个图 这是第一个数字 我正确地得到了第一个数字 import scipy sta
  • 如果用户已经登录,则重定向到主页[重复]

    这个问题在这里已经有答案了 可能的重复 当已通过身份验证的用户访问登录页面时如何重定向到另一个页面 如果登录用户点击login jsp页面 那么他应该会自动重定向到他的home jsp 在身份验证用户转到之前login jsp在通过 ser
  • Cygwin 上的 Makefile

    我正在尝试在 Windows 7 x64 上使用 Cygwin 来使用 makefile 我输入 make 得到的错误是 make 未指定目标且未找到 makefile 停止 生成文件 CC g CFLAGS g Wall pedantic
  • 页面渲染上的自定义 html 标签由于某种原因跳过 HTML 解析

    我不知道为什么会发生这种情况 但如果确实有很多这样的元素 看起来自定义 html 标签无法在页面加载时正确解析其内容 document registerElement x tag prototype Object create HTMLEl
  • 家谱的 Graphviz 点边缘端口

    I am very接近能够生成一个看起来并不糟糕的家谱 但我遇到了以下问题 file tree dot digraph edge dir none node fillcolor black fixedsize true shape box
  • 当我的应用程序指向其他地方时,如何使用 Url.Action 和 Html.ActionLink?

    我在 apps server com appname 上托管了一个 C MVC 应用程序 但我在公司的 F5 上进行了 URL 重写 使该应用程序对 www server com apps appname 可见 现在 当我导航到该 url
  • 如何使用 SDL Tridion TOM.NET API 获取页面或组件的已发布时间戳

    我正在尝试使用 TOM NET API 获取给定页面或组件到给定目标的已发布时间戳 这并不是立即显而易见的Page or Component对象 有人能指出我正确的方向吗 您可以使用PublishEngine GetPublishInfo
  • 如何在Java中复制HashMap(不是浅复制)

    我需要复印一份HashMap
  • UI 之外用于 javascript 链接的闪亮模块命名空间

    我正在尝试使用闪亮的模块来重用 UI 和服务器代码来呈现共享相同演示文稿的三个不同数据集 在 UI 服务器代码之外使用基于 JavaScript 的模态弹出链接创建时 在处理命名空间时遇到了一些挑战 这是我的非工作应用程序代码 librar
  • 大括号扩展和参数扩展的顺序

    StackOverflow 上的常见比喻bash is 为什么不x 99 echo 1 x work 答案是 因为大括号在参数 变量之前展开 因此 我认为应该可以使用单个变量来扩展多个变量 和一个支架 我预计a 1 b 2 c 3 echo
  • 如何使 FlowLayout 包裹在其 JSplitPane 中?

    我编写此代码示例是为了说明我的程序遇到的问题 我希望能够将 JSplitPane 的滑块向左滑动 超出按钮的边缘 压缩 JPanel 并使 FlowLayout 将按钮包装到第二行 相反 JSplitPane 不允许我将滑块移过屏幕上最右边
  • 反序列化时的备用属性名称

    关于这个问题 使用 Json net 序列化时如何更改属性名称 当然 很好 但是我可以把蛋糕吃掉吗 我正在寻找一种令人赏心悦目的方式 为属性提供一个备用名称 使得字符串可以包含其中之一 就像是 BetterJsonProperty Prop
  • Android 构建错误

    当尝试在 Eclipse 中构建我的应用程序时 我遇到了这些错误 当编译器警告我我的 project 文件丢失时 事情开始走下坡路 然后我尝试修复该项目 现在收到以下错误 构建期间发生错误 在项目 net learn2develop Lay
  • 如何关闭 dropwizard 应用程序?

    我正在尝试使用 dropwizard 提出一个微服务 该文档讲述了如何启动应用程序 但没有提及如何优雅地终止它 例如 apache tomcat 都有启动and关闭脚本 那么有谁知道除了按之外如何终止 dropwizard 应用程序Ctrl
  • Python如何通过多重继承传递__init__参数

    我有这段代码 显示了经典的菱形图案 class A def init self x print A x class B A def init self x print B x super init b class C A def init
  • 如何从react调用存储过程

    我得到了一个已经用 ASP NET 开发的网站 我需要在 React 中开发同样的东西 下面是在 net 中编写的代码 用于在用户单击登录时调用存储过程 Dal objDal new Dal DataSet ds objDal ByText
  • c 编程 shmat() 权限被拒绝

    当我运行我的代码时遇到问题 我的 shmat 失败并且打印权限被拒绝 我在谷歌上搜索了如何解决它 但我不能 我的代码如下 include
  • AWS EMR 5.11.0 - Spark 上的 Apache Hive

    我正在尝试在 AWS EMR 5 11 0 上设置 Apache Hive on Spark Apache Spark 版本 2 2 1 Apache Hive 版本 2 3 2 纱线日志显示以下错误 18 01 28 21 55 28 错
  • C++ 数字加负数

    所以我只是练习编写斐波那契数列的动态解决方案 该解决方案将返回第 n 个斐波那契数 但我不断遇到一个我不太明白的问题 我得到两个正数加上一个负数 Code int fib int n vector
  • 使用 $window 配置 AngularJS 路由到深层路径

    我有一个 Rails 应用程序 其中有一些复杂的路由 我的 Angular 应用程序存在于深层 URL 中 例如 quizzes 1 我希望通过将 window 注入到我的路由配置中 然后嗅探 window location pathNam