Я пытаюсь ввести $ http в $ get моего провайдера, чтобы использовать внутри функции, которая создается динамически. Он строит функцию, и мой контроллер успешно вызывает эту функцию, но в то время как внутри созданной функции возникают ошибки, указывающие $http is not defined
. Есть ли другой способ ввести эту зависимость, чтобы сделать ее доступной?
(function(){
angular.module('app').provider('rest', rest);
function rest(){
endpointObjs = [];
return {
addEndpoint:function(name, request, endpoint){
obj = {};
obj.name = name;
obj.request = request;
obj.endpoint = endpoint;
endpointObjs.push(obj);
},
$get:['$http', function($http){
endpoints = [];
for(i=0;i<endpointObjs.length;i++){
endpoints[endpointObjs[i].name] = new Function("return $http({ url:'" + endpointObjs[i].endpoint + "', method:'" + endpointObjs[i].request + "'});")
}
return {endpoints:endpoints};
}]
};
}
})();
EDIT:
Моя конечная цель заключается в создании поставщика, который позволяет кому-то настроить все их остальные конечные точки в конфигурации для приложения, а затем они могут ввести поставщик в их контроллер и вызовите автогенерированная функция, которую они определили в конфигурации, т.е.
config.js restProvider.addEndpoint("allSoftware", "GET", "software/all");
controller.js rest.endpoints.allSoftware().then(function(data){....});
Это потому, что это не анонимная функция; это функция, которая анализируется из строки, что в значительной степени эквивалентно 'eval'. Почему бы не создать анонимную функцию, например '= function() {return $ http ({url: ...'? –
Создание функции таким образом не подходит для того, чего я пытаюсь достичь. Мне нужно быть более динамичный, чем это позволит. Интересно, когда я перехожу к: 'new Function (« return »+ $ http +» ({url: '"+ endpointObjs [i] .endpoint +"', method: '"+ endpointObjs [i] .request +"', params: '"+ endpointObjs [i] .params +"'}); ")' Я получаю другую ошибку 'isObject' не определен. вызывая функцию $ http в этой точке, но не может достичь функции isObject угловой функции, видимо, – CraigR8806
. Пожалуйста, отредактируйте свой вопрос, чтобы включить, как вы используете это, потому что я считаю, что вы можете сделать это так же, как я предлагаю. –