无法在app.config中注入$ location

时间:2014-09-14 01:28:21

标签: angularjs

我正在尝试在配置块中注入$ location和AppConstant(factory)值。

app.config(['RestangularProvider', function (RestangularProvider) {
    RestangularProvider.setBaseUrl('/san/');


    RestangularProvider.setErrorInterceptor(function (response, deferred, responseHandler) {

        if (response.status > 400) {
            //ERROR - can't inject
            angular.injector().invoke(['AppConstant', '$location', function () {
                AppConstant.redirectUrl = $location.path();
                $location.path('/signin');
            }]);
        //
            return false; // error handled
        }

        return true; // error not handled
    });


}]);

但是我没有直接注入配置,我只是试图在某些功能范围的中间注入。

请帮我理解角度和javascript。

1 个答案:

答案 0 :(得分:0)

根据文档,它说:

  

必须明确添加ng模块。

您正在使用它:angular.injector().invoke(... 但你应该像这样使用它:angular.injector(['ng']).invoke(...

这是典型用法:

var $injector = angular.injector(['ng']);
$injector.invoke(function($rootScope, $compile, $document) {
    $compile($document)($rootScope);
    $rootScope.$digest();
});

以下是docs