【问题标题】:$routeParams undefined when passing to new view & controller传递给新视图和控制器时 $route 参数未定义
【发布时间】:2015-04-09 00:54:39
【问题描述】:

这里对 AngularJS 和 WebAPI 相当陌生,并且认为最好的学习方式就是实践。如果这个问题看起来很简单,请提前道歉 - 我花了一天时间浏览 StackOverflow 并尝试了所有这些。

我目前有一个单独的 Master & Detail 视图,它们都有自己的控制器。我正在尝试将选定的 ID 传递给 Details 控制器,以便我可以使用 ID 查询我的数据库,尽管在我的 $routeParams 上得到“未定义”。我不确定我是否遗漏了一些简单的东西,或者我是否正确地处理了这个问题。

当我注入 '$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;
        });
    }
 }]);

【问题讨论】:

  • $route.current.params.id 有什么不同吗?
  • 您的 index.html 中是否定义了 <base href="index.html" />
  • 试试这个..我想这可能是原因:docs.angularjs.org/guide/$location#relative-links 因为你的代码对我来说看起来不错
  • 我去看看。我感觉我的视图和路由设置不正确。试图找到一个好的资源来确认这一点。因为我没有使用 SPA,而是有多个迷你 SPA
  • 它基本上是说如果你还没有设置你的基本href

标签: javascript angularjs asp.net-web-api


【解决方案1】:

我发现我的问题是我所有的 Angular 脚本引用都是分散的。我将所有自定义脚本引用(控制器、工厂、模块)移至 index.cshtml 并修复了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多