2013-02-12 2 views
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 

Может ли кто-нибудь указать, что может быть неправильным.

+0

Попробуйте 'console.log ($ scope)'. – ATOzTOA

ответ

1

Вам необходимо ввести $ scope.

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

EDIT: Полный фикс ...

Все, что вы передаете в контроллер, вы собираетесь нужно вводить, если вы инъекционные явно с 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']; 
+0

, который сделал трюк, но теперь получил еще одну ошибку. ReferenceError: $ location не определен – iJade

+1

Вам также нужно ввести $ location, что является еще одной услугой. –

+0

Добавлен более полный ответ. –

Смежные вопросы