【发布时间】:2013-08-08 16:29:20
【问题描述】:
我正在尝试将路由应用于我的基于 Typescript 的 Angular 应用程序。该应用程序应该让 $routeProvider 注入如下代码:
var app = angular.module("MyApp", ["ui.bootstrap"]);
// app.service's and controller's here...
app.config(["$routeProvider",
function ($routeProvider: ng.IRouteProvider) {
$routeProvider
.when("/", {
controller: MyApp.Controllers.ItemsController,
templateUrl: "/Items.html"
})
// ... other routes ...
.otherwise({
redirectTo: "/"
});
}]);
无论如何,当我启动应用程序时,我从 Angular 收到一个异常,告诉我它找不到名为 $routeProviderProvider 的提供程序:
Error: Unknown provider: $routeProviderProvider <- $routeProvider at Error (<anonymous>)
at http://.../Scripts/angular.js:2734:15
at Object.getService [as get] (http://.../Scripts/angular.js:2862:39)
at http://.../Scripts/angular.js:2739:45
at getService (http://.../Scripts/angular.js:2862:39)
at invoke (http://.../Scripts/angular.js:2880:13)
at Object.instantiate (http://.../Scripts/angular.js:2914:23)
at $get (http://.../Scripts/angular.js:4805:24)
at $get.i (http://.../Scripts/angular.js:4384:17)
at forEach (http://.../Scripts/angular.js:137:20) undefined angular.js:5754
通过查看角度源 (1.0.7),我可以看出这是因为在创建 instanceInjector 的第 2737 行,它的名称来自附加一个名为 providerSuffix,其值为“Provider”,指向请求的提供者名称(此处为“$routeProvider”)。因此,这会导致异常。然而,正确的名称应该是“$routeProvider”;如果我在代码中将其更改为“$route”,则此错误会按预期消失,因为现在构建的名称是“$routeProvider”;但我得到另一个异常,告诉我服务“$route”没有定义。那么,我该怎么做才能解决这个问题呢?
【问题讨论】:
-
: ng.IRouteProvider有什么用? -
这是 TypeScript:它只是一个类型声明。类型来自github.com/borisyankov/DefinitelyTyped。无论如何,代码被编译成 JS,这并没有实际效果。
标签: angularjs typescript