为什么我们需要 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
