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
我正在查看一些关于执行 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