1

这是我在 Angular 应用程序中的 controller.js 代码

function MyCtrl1($scope) {
  $scope.$on('$locationChangeStart', function (event, next, current) {
    event.preventDefault();
    var answer = confirm("Are you sure you want to leave this page?");
    if (answer) {
      $location.url($location.url(next).hash());
      $rootScope.$apply();
    }
  });
}
MyCtrl1.$inject = [];


function MyCtrl2() {}
MyCtrl2.$inject = [];

当我签入 chrome 时,我在开发者控制台中收到以下错误

TypeError: Cannot call method '$on' of undefined

任何人都可以指出可能出了什么问题。

4

1 回答 1

1

你需要注入 $scope。

MyCtrl1.$inject = ['$scope'];

编辑:完整的修复...

任何你传递到你的控制器的东西,你都需要注入,如果你明确地注入ctrl.$inject = [];

function MyCtrl1($scope, $location, $rootScope) {
  $scope.$on('$locationChangeStart', function (event, next, current) {
    if (!confirm("Are you sure you want to leave this page?")){
      event.preventDefault();
    }
  });
}
MyCtrl1.$inject = ['$scope', '$location', '$rootScope'];
于 2013-02-12T16:34:11.920 回答