获取$ rootScope事件处理程序的$ scope引用

时间:2013-08-30 11:46:19

标签: javascript angularjs angularjs-scope

在我的应用程序主模块的.run部分中,我有一个$locationChangeStart事件的事件处理程序。我想使用它来确认丢弃未保存的更改。问题是我需要引用$scope才能执行这些检查。

我尝试添加该引用,因为我为$rootScope添加了引用,但收到错误Uncaught Error: Unknown provider: $scopeProvider <- $scope

我该如何处理?我愿意接受替代方案。

.run(['$rootScope', '$location', function ($rootScope, $location) {
    $rootScope.$on("$locationChangeStart", function (event, next, current) {
        if ($scope.unsavedChanges && !confirm('Unsaved changes') {
            event.preventDefault();
        }
    });
 }

2 个答案:

答案 0 :(得分:1)

您只能将实例(不是提供者)注入run块。这来自module的文件。

angular.module('myModule', []).
    run(function(injectables) { // instance-injector
        // This is an example of a run block.
        // You can have as many of these as you want.
        // You can only inject instances (not Providers)
        // into the run blocks
    });

因此您将无法注入$scopeProvider

答案 1 :(得分:0)

您可以将$ scope注入您的函数,例如;

 .run(['$rootScope', '$location', '$scope', function ($rootScope, $location, $scope)