我正在关注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)"