我试图触发控制器中某个函数内部的angularJS路由,但它会抛出"未捕获的TypeError:无法读取属性' path'未定义"。无法真正看到我错过$ location注入的位置,猜测它的原因。
var gameApp = angular.module('gameApp', ['ngRoute']);
gameApp.config(function($routeProvider, $locationProvider, $provide) {
$locationProvider.html5Mode(true);
$routeProvider
// route for the home page
.when('/', {
templateUrl : 'home.html',
controller : 'mainController'
})
// route for the game page
.when('/game', {
templateUrl : 'game.html',
controller : 'gameController'
})
// route for the game over page
.when('/game-over', {
templateUrl : 'game-over.html',
controller : 'mainController'
})
// default
.otherwise({
redirectTo: '/'
});
});
当我使用路由器
时,我的游戏控制器的一部分gameApp.controller('gameController', ['$scope', '$location', function($scope, $location){
function gameLost($location){
var check = false;
console.log ('You lose! Your score is ')
$location.path('/game-over');
}])
答案 0 :(得分:6)
看看这段代码:
function gameLost($location) {
var check = false;
console.log ('You lose! Your score is ')
$location.path('/game-over');
}
除非你像这样调用这个函数gameLost($location)
(我怀疑)$location
将在本地函数范围内以未定义的方式结束,从父闭包范围覆盖$location
服务。 / p>
所以我认为您需要做的就是从$location
函数定义中删除gameLost
参数:
function gameLost() {
var check = false;
$location.path('/game-over');
}