AngularJS UI-Router:未知提供者:$stateProvider。

18

我在使用AngularJS的ui-router插件时遇到了问题:

angular.module('myApp', []).
config(['$routeProvider', '$stateProvider', function($routeProvider, $stateProvider) {  
    $stateProvider
        .state('mandats', {
            url: '/domiciliations/mandats',
            templateUrl: 'domiciliations/views/mandats.html',
            controller: 'mandatsCtrl'
        });
}])

然后我在启动时遇到了这个错误:

Unknown provider: $stateProvider

我已经按照以下顺序包含了这些 JavaScript:

<script src="/Scripts/libs/angular/angular.js"></script>
<script src="/Scripts/libs/angular/angular-resource.js"></script>
<script src="/Scripts/libs/angular/angular-ui-states.js"></script>

问题可能出在哪里?

[编辑]

我通过将“ui.compat”添加为myApp的依赖项来消除了错误消息。我在ui-router的示例代码中看到了这一点,但在文档中没有发现。这是怎么回事?

尽管如此,它仍然无法正常工作。我已经将ui-view添加到应用程序索引文件中的一个div中。但页面仍然是空白的。


请问您能否列出您正在运行的Angular版本? - Manuel Hernandez
3个回答

15
你只需要将ui-router模块作为依赖项包含进去。 像下面这样:

如下:

angular
    .module('myApp', ["ui.router"])
    .config(['$routeProvider', '$stateProvider', function($routeProvider, $stateProvider) { 
        ...
    }]);

你在 .config 文件中关闭数组的位置在哪里? - Greg Wiley

15

下面的代码应该能完成工作。至少在我的情况下是这样,如果不起作用请告诉我。

angular.module('myApp', ['ui.compat']).
config(['$routeProvider', '$stateProvider', function($routeProvider, $stateProvider) {  
    $stateProvider
        .state('mandats', {
            url: '/domiciliations/mandats',
            templateUrl: 'domiciliations/views/mandats.html',
            controller: 'mandatsCtrl'
        });
}])

关于您的页面为空的问题。确保您在浏览器中使用的URL与状态中定义的任何URL都不匹配。尝试在浏览器中使用“#/domiciliations/mandats”,看看视图是否正确呈现。请注意,您的绝对URL应该类似于http://[HOST_NAME]/home.html#/domiciliations/mandats


就像我在之前的回复中所说的那样,那就是我最终做的事情。不过我会将你的回复标记为答案的;)谢谢。 - Sam
1
我尝试了这个,但是Angular找不到'ui-compat'。错误如下: Uncaught Error: [$injector:modulerr] 无法实例化模块myApp,原因是: Error: [$injector:modulerr] 无法实例化模块ui.compat,原因是: Error: [$injector:nomod] 模块'ui.compat'不可用!您可能拼写错误或忘记加载它。如果要注册模块,请确保将依赖项指定为第二个参数。 - Manuel Hernandez

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接