本文将介绍在AngularJS中缓存HTTP“获取”服务响应?的详细情况,特别是关于angular前端缓存的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一
本文将介绍在AngularJS中缓存HTTP“获取”服务响应?的详细情况,特别是关于angular前端缓存的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于$ http.post在AngularJS中不起作用、$ http在AngularJS中上传文件的进度、angularjs – Angular $httpBackend如何模拟错误响应?、angularjs – 在Angular.JS中缓存DOM的知识。
本文目录一览:- 在AngularJS中缓存HTTP“获取”服务响应?(angular前端缓存)
- $ http.post在AngularJS中不起作用
- $ http在AngularJS中上传文件的进度
- angularjs – Angular $httpBackend如何模拟错误响应?
- angularjs – 在Angular.JS中缓存DOM
在AngularJS中缓存HTTP“获取”服务响应?(angular前端缓存)
我希望能够创建一个自定义AngularJS服务,该服务在其数据对象为空时发出HTTP“获取”请求,并在成功时填充该数据对象。
下次调用此服务时,我想绕过再次发出HTTP请求的开销,而是返回缓存的数据对象。
这可能吗?
$ http.post在AngularJS中不起作用
当我使用$http.get
我的代码时,但是如果我使用$ http.post,则永远不会将参数获取到请求.php文件中。
这是服务功能:
TestPanel.service('MySampleService',function ($http,$q) {
this.getAllPosts = function () {
var def = $q.defer();
$http.post('/data/AJAXRequest.php','mydata=1&abcd=2').success(function (data) {
if (data == null)
def.reject('ERROR: DATA IS NULL');
else if (data.HasError)
def.reject('ERROR: ' + data.Message);
else
def.resolve(data);
}).error(function () {
def.reject('ERROR: Sorry,unable to complete your request.');
});
return def.promise;
}
});
和控制器功能:
TestController.controller('PostCtrl',['$scope','$http','MySampleService',function ($scope,$http,MySampleService) {
function FetchPostsList() {
MySampleService.getAllPosts().then(function (data) {
$scope.lstPosts = data.ResponseData;
$scope.totalRecords = data.totalRecords;
console.info('DATA=' + $scope.lstPosts);
},function (err) {
console.info('err=' + err);
});
}
FetchPostsList();
}
]);
和我的AJAXRequest.php文件
<?php
var_dump($_POST)
?>
如果我使用 $ http.post()
输出 :
array (size=0)
empty
如果我使用 $ http.get(), 我的输出是:
array (size=2)
'mydata' => string '1' (length=1)
'abcd' => string '2' (length=1)
我检查了FireBug工具中的帖子,该帖子将数据发送到我的php文件中。但PHP文件没有参数。
如果我使用 $ .ajax 或 $ .post 我的代码工作,它会给出响应。
$ http在AngularJS中上传文件的进度
如何从正在上传图像的AngularJS $ http POST请求中获取“进度”事件?是否可以在客户端进行此操作,还是我需要服务器在接收数据时报告进度?
答案1
小编典典我认为$ http.post()不能用于此目的。
至于客户端,它应该与HTML5浏览器一起使用,但是您可能必须创建自己的XMLHttpRequest对象和onprogress
侦听器。
angularjs – Angular $httpBackend如何模拟错误响应?
$httpBackend.expectGET(path).respond(400,object);
400集response.status和对象设置response.data,但是如何设置response.error?我需要测试的数据不在数据字段中.
示例API响应:
{ status: 400,data: {},error: {} }
解决方法
$httpBackend.expectGET(path).respond(400,object);
说当代码向’path’端点发出请求时,用响应’object’响应400状态代码
所以,例如,假设您的单元测试在您的应用中点击此代码…
$http.GET(path).then(function(response) { // this code is hit with 2xx responses vm.fred = 'hello'; }).catch(function(errorResponse) { // this code is hit with any status code not starting with 2! e.g. 400 vm.fred='Failed'; });
因此,您的代码将导致执行catch块.但是,在单元测试中,为了强制执行catch块,你需要做…
$rootScope.$digest();
这将触发then或catch块的执行(以相关者为准).
然后,您可以像往常一样在单元测试中做出预期.请注意,在您的示例中,errorResponse将是对象.
angularjs – 在Angular.JS中缓存DOM
欢迎任何建议!
背后的基本思路是:
在路由更改之前,不要摧毁当前视图元素和作用域,您只需将其放在一个不可见的缓存DIV中,并注销范围侦听器。给元素一个数据属性与$$ route.templateUrl能够得到它。
然后您从服务器获取下一个视图。
在路由更改之前,请检查缓存项目是否存在,并且如果在缓存区中,从缓存中获取元素,请重新注册侦听器并将当前视图放在缓存中。
棘手的部分不是让$ scopes上升。因此,您可能需要在$范围内为事件创建一个构造函数和析构函数,也可能需要$ watchers。我不确定。
但是说实话,如果你使用模板缓存并且还需要1秒钟的时间来渲染,那么你可能会有一些效率低下的watch表达式,或者是巨大的ng重复。你应该考虑一些反应。
今天关于在AngularJS中缓存HTTP“获取”服务响应?和angular前端缓存的讲解已经结束,谢谢您的阅读,如果想了解更多关于$ http.post在AngularJS中不起作用、$ http在AngularJS中上传文件的进度、angularjs – Angular $httpBackend如何模拟错误响应?、angularjs – 在Angular.JS中缓存DOM的相关知识,请在本站搜索。
本文标签: