为什么我们需要 AngularJs 服务和工厂?
如果我们对 AngularJs 有所了解,也许我们了解 MVC 架构并听说过 AngularJs 控制器。
但有时我们需要为所有(或者某些)控制器提供全局性的东西,例如一些函数,或者变量,有助于我们交流的动作与服务器端等...那么我们现在可以做什么?
由于 AngularJS 现在是一个已弃用的框架,我们可以改用 JavaScript 现代框架,如 Vuejs、React 和 Angular。
AngularJs 不会如此强大,如果没有它是解决此类问题的组件。
AngularJs 建议我们使用服务和工厂(有时是值和常量)来为控制器和许多其他 AngularJs 组件提供全局操作和变量。
让我们看看我们如何定义一个简单的服务
angular.module('MyModule', [...]) .service('MyService', ['$http', function($http){ return { users: [...], getUserFriends: function(userId){ return $http({ method: 'GET', url: '/api/user/friends/' + userId }); }, deleteUserFriend: function(userId, friendId){ return $http({ method: 'DELETE' url: '/api/user/delete/friend/' + userId +'/' + friendId }); } .... } }])
你可以做同样的事情,使用 AngularJs 工厂。
同样的方式,只需将“服务”替换为“工厂”。
现在让我们看看我们如何使用该服务。
让我们定义一个简单的控制器并使用该服务。
angular.module('MyModule') .controller('MyController', ['$scope', 'MyService', function($scope, MyService){ $scope.users = MyService.users //some items inside array $scope.deleteUserFriend = function(userId, friendId){ if(userId && friendId){ MyService.deleteUserFriend(userId, friendId) .success(function(res, ...){ //on success function }) .error(function(res, ...){ //on error function }) } ... } }])
如我们所见,Service 和 Factories 让我们拥有一些服务功能,与服务器通信、存储数据等......
AngularJs 允许我们在其他 AngularJs 组件中使用服务和工厂,比如指令、工厂,甚至在服务内部。
日期:2020-06-02 22:18:46 来源:oir作者:oir