javascript - 在 $routeProvider 解析功能中找不到 AngularJS 声明的服务

标签 javascript angularjs

我的主 JS 中有以下 AngularJS 代码(LoginData 是全局值,Config 是工厂实例):

app.service('portfolioData', function($http, LoginData, Config) {
return {
    load: function( $http, LoginData, Config ) {
        return $http({
            method: 'GET',
            url: getHostnamePort(Config) + '/rest/api/property/list',
            headers: { 
                'Content-Type': 'application/json',
                'x-api-token': LoginData.apiToken,
                'x-api-user': LoginData.apiUser
            }
        }).then( function successCallback( response ) {
            console.log( "Portfolio loaded" );
            return response.data;
        }, function errorCallback ( response ) {
            console.log( "Portfolio load FAILED" );
            console.log( response.status );
            if ( response.status == '401' )
                $scope.failureMessage = "Unauthorised. Please Login in.";
            return null;
        });
    }
};
});

接下来我已经声明了我的路线:

app.config(function ($routeProvider) {
    ...
    $routeProvider.when('/portfolio', {templateUrl: "http://xxxxx/~matthew/view/portfolio.view", resolve: { portfolio: portfolioData.load( $http, LoginData, Config ) }});
});

由于某种原因,AngularJS 找不到 PortfolioData 服务,因此不会运行该应用程序。

我尝试过使用工厂。 如果我内联 $http 调用,它似乎可以工作,但我不想内联此代码,因为它很重要,并且我希望在其他地方重用它。

enter image description here

最佳答案

首先,您不需要将服务作为函数加载的参数传递:

load: function() {
    return $http({...}).then...
}

然后,我认为解析的投资组合属性需要一个如下函数:

resolve: { 
    portfolio: function(portfolioData) {
         return portfolioData.load();
    }
}

或已解决:

resolve: { 
    portfolio: function(portfolioData) {
         return portfolioData.load().then(function (data) {
              return data;
         });
    }
}

关于javascript - 在 $routeProvider 解析功能中找不到 AngularJS 声明的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48727528/

相关文章:

javascript - 在 Opera 中发出 iframe 的重定向父级问题

php - 通过 HTML 将复杂变量传递给 javascript 的正确方法

javascript - 检查链接是否有 https ://in angularjs

javascript - Highcharts - 动态启用/禁用滚动条

javascript - 单选按钮不适用于 UiBootstrap

javascript - 在配置 block 中注入(inject)服务或工厂时出错

javascript - 如何将此功能转变为符合 Angular 功能?

javascript - 设置 img src 属性时宽度和高度不变

javascript - 用javascript调用不同的svg文件

javascript - Angular : find parent Objects inside directives