随机应用程序崩溃与ngRoute

时间:2015-04-28 05:34:17

标签: angularjs

我正在关注AngularJS ngView页面上的指南,但是将其自定义到我的特定应用程序。当我尝试更改视图时,应用程序崩溃了。

相关代码如下:

app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){

    $routeProvider.when('/', {
        templateUrl: '/templates/items.html',
        controller: 'itemListController',
        controllerAs: 'list'
    }).when('/Item/:itemID', {
        templateUrl: '/templates/item.html',
        controller: 'itemController',
        controllerAs: 'item'
    });

    $locationProvider.html5Mode(true);
}]);

页面加载时,项目视图可以正常工作。但是,当我将$location.path更改为/Item/1时,应用程序会崩溃浏览器。如果我将templateUrl更改为相同的/templates/items.html,它会正常更改,但由于未为该控制器设置模板,因此显然无法正常工作。

目前,我的item.html temnplate是一个空文件。我尝试过没有运气的东西。同样,我的itemController是一个空控制器。但是,当我注入$routeParams依赖项时,我得到一个无限循环,并且超过"最大调用堆栈大小限制"错误。下面是我的无限循环控制器:

app.controller('itemController', ['itemService', '$routeParams', function(itemService, $routeParams){
    console.log($routeParams);
}]);

我的默认/视图遇到了类似问题,但不知何故让它正常运行。几个小时后,我无法解决这个问题。我做错了什么吗?或者问题在我的代码中更深处?

更新 根据评论中的要求,我更改$location.path的控制器是我的主要视图"控制器:

app.controller('viewController', ['$route', '$routeParams', '$location', function($route, $routeParams, $location){
    var ctrl = this;
    ctrl.title = "App Name";
    ctrl.$route = $route;
    ctrl.$location = $location;
    ctrl.$routeParams = $routeParams;

    ctrl.changeView = function(view){
        $location.path(view);
    };
}]);
然后在元素内部调用

changeView()' ng-click。例如,items.html中的一个项目有ng-click="view.changeView('/Item/'+item.Id)"

0 个答案:

没有答案