1

これが角度アプリの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 = [];

クロムをチェックインすると、開発者コンソールで次のエラーが発生しました

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 に答える