gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:14 24 4
gpt4 key购买 nike

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

我希望 Angular 通过将 $window 注入(inject)我的路由配置然后嗅探 $window.location.pathName 来做到这一点。这似乎是不可能的,因为应用程序在此阶段抛出“Unknown provider: $window from myApp”。

是否有使用 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'
})
}])

最佳答案

只有常量和提供者可以注入(inject)配置 block 。 $window 不能注入(inject)到您的配置 block 中,因为 $window 是一项服务。

来自 Angular docs :

Configuration blocks - get executed during the provider registrations and configuration phase. Only providers and constants can be injected into configuration blocks. This is to prevent accidental instantiation of services before they have been fully configured.

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

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

并保持你的路线与它相关。

关于javascript - 使用 $window 配置 AngularJS 路由到深层路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15510805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com