传递给新视图和控制器时 $route 参数未定义
$routeParams undefined when passing to new view & controller
这里对 AngularJS 和 WebAPI 相当陌生,最好的学习方法是边做边做。如果这个问题看起来很简单,请提前致歉 - 我花了一天时间浏览 Whosebug 并尝试了所有方法。
我目前有一个单独的主视图和详细视图,它们都有自己的控制器。我正在尝试将选定的 ID 传递给 Details 控制器,以便我可以使用该 ID 查询我的数据库,尽管在我的 $routeParams 上得到 "undefined"。我不确定我是否遗漏了一些简单的东西,或者我是否正在正确地处理这个问题。
当我注入“$routeParams”时,控制器似乎也不喜欢它。
我的 app.js 模块:
var app = angular.module("ProjectDashboardModule", ["ngRoute"]);
app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider
.when("/", { templateUrl: "/Home/Index" })
.when("/Project", { templateUrl: '/Project/Index', controller: 'ProjectCrudController' })
.when("/Project/project/:id", {templateUrl:'/Project/project', controller: 'ProjectTaskController' });
$routeProvider.otherwise({redirectTo: '/home' });
$locationProvider.html5Mode(true);
}]);
我的Factory.js:
app.factory('projectFactory', ['$http', function ($http) {
var urlBase = '/api/Projects/';
var projectFactory = {};
projectFactory.getProjects = function () {
return $http.get(urlBase);
};
projectFactory.getSingleProject = function (id) {
return $http.get(urlBase + '/' + id);
};
return projectFactory;
}]);
我的ProjectTaskController.js:
app.controller('ProjectTaskController', ['$scope', "$routeParams", 'projectFactory', function ($scope, $routeParams, projectFactory) {
alert($routeParams.id)
$scope.project;
$scope.message;
getProjectById($routeParams.id);
function getProjectById(id) {
projectFactory.getSingleProject(id)
.success(function (data) {
$scope.project = data;
})
.error(function (error) {
$scope.message = 'error retrieving project ' + error.message;
});
}
}]);
我发现我的问题是我所有的 angular 脚本引用都是分散的。我将所有自定义脚本引用(控制器、工厂、模块)移至 index.cshtml 并解决了问题。
这里对 AngularJS 和 WebAPI 相当陌生,最好的学习方法是边做边做。如果这个问题看起来很简单,请提前致歉 - 我花了一天时间浏览 Whosebug 并尝试了所有方法。
我目前有一个单独的主视图和详细视图,它们都有自己的控制器。我正在尝试将选定的 ID 传递给 Details 控制器,以便我可以使用该 ID 查询我的数据库,尽管在我的 $routeParams 上得到 "undefined"。我不确定我是否遗漏了一些简单的东西,或者我是否正在正确地处理这个问题。
当我注入“$routeParams”时,控制器似乎也不喜欢它。
我的 app.js 模块:
var app = angular.module("ProjectDashboardModule", ["ngRoute"]);
app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider
.when("/", { templateUrl: "/Home/Index" })
.when("/Project", { templateUrl: '/Project/Index', controller: 'ProjectCrudController' })
.when("/Project/project/:id", {templateUrl:'/Project/project', controller: 'ProjectTaskController' });
$routeProvider.otherwise({redirectTo: '/home' });
$locationProvider.html5Mode(true);
}]);
我的Factory.js:
app.factory('projectFactory', ['$http', function ($http) {
var urlBase = '/api/Projects/';
var projectFactory = {};
projectFactory.getProjects = function () {
return $http.get(urlBase);
};
projectFactory.getSingleProject = function (id) {
return $http.get(urlBase + '/' + id);
};
return projectFactory;
}]);
我的ProjectTaskController.js:
app.controller('ProjectTaskController', ['$scope', "$routeParams", 'projectFactory', function ($scope, $routeParams, projectFactory) {
alert($routeParams.id)
$scope.project;
$scope.message;
getProjectById($routeParams.id);
function getProjectById(id) {
projectFactory.getSingleProject(id)
.success(function (data) {
$scope.project = data;
})
.error(function (error) {
$scope.message = 'error retrieving project ' + error.message;
});
}
}]);
我发现我的问题是我所有的 angular 脚本引用都是分散的。我将所有自定义脚本引用(控制器、工厂、模块)移至 index.cshtml 并解决了问题。