繁体   English   中英

TypeError:无法调用未定义的方法“ $ on”

[英]TypeError: Cannot call method '$on' of undefined

这是我在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

谁能指出什么是错的。

您需要注入$ scope。

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

编辑:完整修复...

如果要使用ctrl.$inject = [];显式注入,则将要传递到控制器中的所有内容都需要注入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'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM