routeParams 没有注入我的控制器?

routeParams doesnt inject into my controller?

我正在查看一些关于执行 angular 路由和将参数传递到控制器的操作方法。这就是我所做的:

.controller("myController", ["$scope", "$routeParams", function($scope, $routeParams, Units, Tests){
  //Units and Tests are both factories i created to reference within this function.
  var id = $routeParams.id;
  console.log(id);
}]);

当我这样做时,它无法将“$routeParams”注入我的应用程序。

我查看了angular.js文件,看起来我是运行:@license AngularJS v1.5.3

这样的做法是不是已经不对了?我尝试将其更新为:

.controller("myController", ["$scope", "ngRoute", function($scope, ngRoute, Units, Tests){
  // ...
}]);

但这似乎也没有正确注入。

有什么我遗漏的吗?

目前我正在使用 Ionic Framework 进行开发,它利用了 AngularJS 工具。

如果您想导航到应用程序中的不同页面,但您还希望应用程序成为 SPA (Single Page Application),无需重新加载页面,您可以使用 ngRoute 模块。

ngRoute 模块将您的应用程序路由到不同的页面,而无需重新加载整个应用程序。

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
    $routeProvider
    .when("/", {
        templateUrl : "main.html"
    })
    .when("/red", {
        templateUrl : "red.html"
    })
    .when("/green", {
        templateUrl : "green.html"
    })
    .when("/blue", {
        templateUrl : "blue.html"
    });
});

您的应用需要一个容器来放置路由提供的内容。

这个容器是ng-view directive

像这样

<div ng-view></div>

您还可以为每个视图定义控制器

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
    $routeProvider
    .when("/", {
        templateUrl : "main.html"
    })
    .when("/london", {
        templateUrl : "test.html",
        controller : "myController"
    })

});

在处理离子时,如问题中所述,您连接到 $stateProvider,因此当您创建如下状态时:

$stateProvider
  .state("unit", {
    url: "/unit/:id",
    templateUrl: "templates/unit.html",
    controller: "UnitController"
  })

然后你会在你的控制器中做:

.controller("myController", ["$scope", 
    "$stateParams", 
    function($scope, $stateParams, Units, Tests){
  var id = $stateParams.id;
  console.log(id);
}]);

这是在 Ionic 中实现的方法,因为它利用 $stateProvider 而不是 $routeProvider