angularjs:将服务传递到另一个服务?

时间:2017-11-06 01:58:17

标签: javascript angularjs json

我正在尝试找出执行以下操作的最佳方法:

根据我们后端开发人员的要求,我们希望有一个json文件,其中包含我的前端请求中使用的api url的主列表。这样,最终用户的浏览器只对该对象发出一个请求,然后我们可以将它们传递给其他服务。所以例如......

dataUrl JSON包含以下内容

{
    "emails":"json/emails.json",
    "mapping":"json/mapping.json",
    "profile":"json/profile.json"
}

我需要将其存储为可以在我的所有api调用中使用的变量:

app.factory('Emails', ['$http', function($http, Urls) {

    var url = ""; //something here to get the dataUrl object for "emails"

    var query = {};
    query.getItems = function () {
        return  $http.get(url.emails); //from var emails above?
    };
    return query;
}]);

对我来说,最好的方法是什么?

这是我到目前为止所尝试的,但它没有工作......

app.factory('Urls', ['$http', function($http) {
    var query = {};
    query.getItems = function () {
        return  $http.get('json/dataUrls.json');  
    };
    return query;
}]);

app.factory('Emails', ['$http', function($http, Urls) {
    Urls.getItems().then(function(response) {
        var url = response.data.emails;
        console.log(url);
    })
    var query = {};
    query.getItems = function () {
        return  $http.get('json/emails.json');  
    };
    return query;
}]);

这会导致控制台错误TypeError: Cannot read property 'getItems' of undefined

1 个答案:

答案 0 :(得分:1)

你以错误的方式注入依赖

首先注入然后创建它的实例

试试这个

替换

app.factory('Emails', ['$http', function($http, Urls) {

app.factory('Emails', ['$http', 'Urls', function($http, Urls) {