Angularjs routing:无法读取undefined的属性'path'

时间:2014-09-19 08:37:48

标签: javascript angularjs

我试图触发控制器中某个函数内部的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');

}])

1 个答案:

答案 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');
}