Angularjs存根开发-$http调用和$httpBackend
我正在使用angularjs进行存根开发。我的存根是服务器上的JSON文件。因此,我在“stub”函数中调用$http来获取stub。但是,由于$http是异步的,whenGET始终返回空数据(它不等待http完成)。我研究了当前关于这个主题的问题。它们提供了将http调用的返回值分配给作用域数据模型的方法。我想在http请求完成后返回数据。下面是代码Angularjs存根开发-$http调用和$httpBackend,angularjs,angularjs-http,Angularjs,Angularjs Http,我正在使用angularjs进行存根开发。我的存根是服务器上的JSON文件。因此,我在“stub”函数中调用$http来获取stub。但是,由于$http是异步的,whenGET始终返回空数据(它不等待http完成)。我研究了当前关于这个主题的问题。它们提供了将http调用的返回值分配给作用域数据模型的方法。我想在http请求完成后返回数据。下面是代码 stubbedOstnApp.run(['$httpBackend','$http',function($httpBackend, $http)
stubbedOstnApp.run(['$httpBackend','$http',function($httpBackend, $http){
var tempData;
var get = function (){
return $http.get('../test/data/program-categories.json').then(function(data){
tempData = data.data;
console.log(tempData);
return tempData;
})
};
get();
console.log(tempData);
$httpBackend.whenGET('lookup/program-categories').respond(tempData);
$httpBackend.whenGET(/^views\//).passThrough();
$httpBackend.whenGET(/^\.\.\/test\/data\//).passThrough();
}]);
基本上,我希望whenGET行等待tempData被填充。在运行whenGET方法后,get函数中的tempData将记录在控制台中。为此,您应该使用以下命令:
这里对承诺的极好解释:您应该在向$http.get提供的成功回调中填充tempData 试着这样做:
var get = function (){
return $http.get('../test/data/program-categories.json').then(function(data){
tempData = data.data;
$httpBackend.whenGET('lookup/program-categories').respond(tempData);
console.log(tempData);
return tempData;
})
};
get();
console.log(tempData);
我当前的代码使用承诺。我需要一些不同的东西。当前的大多数解决方案都说明了如何在$scpe中填充数据模型。我想让我的一些指令等待http完成。