在我的应用程序主模块的.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();
}
});
}
答案 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)