程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Angular $ http vs服务vs ngResource大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Angular $ http vs服务vs ngresource?

开发过程中遇到Angular $ http vs服务vs ngresource的问题如何解决?下面主要结合日常开发的经验,给出你关于Angular $ http vs服务vs ngresource的解决方法建议,希望对你解决Angular $ http vs服务vs ngresource有所启发或帮助;

决定将其表达为答案,因为在评论中我们基本上得出了您想知道的内容:

使用$ http或$ resource仍然可以缓存结果,您指出了在问题中真正使用一个结果的原因。如果您具有RESTful接口,那么使用$ resource会更好,因为最终您将编写更少的RESTful接口通用的样板代码,如果您不使用RESTful服务,则$ http更有意义。您可以使用以下两种方法之一来缓存数据:http://www.pseudobry.com/power-up-http-with- caching/

我认为将$ http或$ resource请求放入服务通常效果更好,因为您希望从多个位置访问数据,并且该服务充当一个单例对象。因此,基本上,您可以在此处处理任何类型的缓存,并且控制器都可以仅监视适当的服务来更新自己的数据。我发现控制器中的$ watch组合用于获取服务上的数据,并从服务的方法中返回承诺,这使我在如何更新控制器中的内容方面具有最大的灵活性。

我将这样的东西放入控制器中,并将exampleservice注入到控制器定义的顶部。

@H_262_10@angular.module("exampleApp", []).service('exampleservice', ["$http", "$q" ,function ($http, $q) { var service = { returnedData: [], dataLoaded:{}, getData = function(forcerefresh) { var deferred = $q.defer(); if(!service.dataLoaded.genericdata || forcerefresh) { $http.get("php/getSomeData.php").success(function(data){ //service.returnedData = data; //As Mark mentions in the comments below the line above Could be replaced by angular.copy(data, service.returnedData); //if thE intention of the watch is just to update the data //in which case the watch is unnecessary and data can //be passed directly from the service to the controller service.dataLoaded.genericdata = true; deferred.resolve(service.returnedData); }); } else { deferred.resolve(service.returnedData); } return deferred.promise; }, addSomeData:function(someDatatoadd) { $http.post("php/addSomeData.php", someDatatoadd).success(function(data){ service.getData(true); }); } }; service.getData(); return service; }]).controller("ExampleCtrl", ["$scope", "exampleservice", function($scope, exampleservicE){ //$scope.$watch(function() {return exampleservice.returnedData}, function(returnedData){ // $scope.mymodel.someData = returnedData; //}); //if not using angular.copy() in service just use watch above $scope.mymodel.someData = exampleservice.returnedData; }]);

另外,这是Angular团队关于“最佳做法”的精彩视频,我仍在重新观看,并逐渐吸收。

解决方法

我想了解使用简单的$
http请求到服务器和/或将该请求包装在服务中使用Ngresource对象(相对于RESTful资源而言不是显而易见的)相比的优缺点。

据我了解,$ http请求是低级别的,但非常灵活且可配置,而当处理RESTful API时,ngresource对象使通信非常简单。

我想我要问的是一个非常简单的情况,比如说从服务器中检索数据(对象数组的GET请求)相对于将其包装在服务中,仅使用$ http请求会更有效。
(应该总是这样吗?)还是使用Ngresource对象?

这里的任何想法将不胜感激。例如,可以缓存$ http响应,可以使用Ngresource吗?谢谢。

大佬总结

以上是大佬教程为你收集整理的Angular $ http vs服务vs ngResource全部内容,希望文章能够帮你解决Angular $ http vs服务vs ngResource所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。