我正在尝试找出执行以下操作的最佳方法:
根据我们后端开发人员的要求,我们希望有一个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
答案 0 :(得分:1)
你以错误的方式注入依赖
首先注入然后创建它的实例
试试这个
替换
app.factory('Emails', ['$http', function($http, Urls) {
到
app.factory('Emails', ['$http', 'Urls', function($http, Urls) {