gpt4 book ai didi

javascript - 如何从 Angular 服务中的 API 获取数据并将其存储以供将来任何人使用

转载 作者:行者123 更新时间:2023-12-02 14:03:52 26 4
gpt4 key购买 nike

这更多的是编写干净的代码/优化现有代码。我正在编写我的 Angular 服务来从后端获取数据,如下所示

angular.module('myApp').service('Auth', ['$http', '$q', 'Config', function($http, $q, Config) {
this.getUser = function() {
return $http.get(Config.apiurl + '/auth/user')
.then(function(response) {
return response.data;
}, function(error) {
return $q.reject(error.data);
});
};
}]);

现在,我从数据库调用 getUser 函数 n 次。现在的问题是,是否可以调用此服务来获取 n 次冗余数据,或者我应该将其保存在某个地方(例如根范围)以供稍后访问?或者存储在根范围中将是不好的做法,我应该考虑其他选择还是什么都不考虑?想在这里获得一些关于 Angular 社区的看法。

最佳答案

这是一个示例 example了解如何使用工厂在应用程序中共享数据。

让我们创建一个工厂,可在所有 Controller 的整个应用程序中使用它来存储数据并访问它们。

工厂的优点是您可以在其中创建对象并在 Controller 中的任何位置初始化它们,或者我们可以通过在工厂本身中初始化它们来设置默认值。

工厂

app.factory('SharedData',['$http','$rootScope',function($http,$rootScope){

var SharedData = {}; // create factory object...
SharedData.appName ='My App';
return SharedData;
}]);

服务

app.service('Auth', ['$http', '$q', 'SharedData', function($http, $q,SharedData) {
this.getUser = function() {

return $http.get('user.json')
.then(function(response) {
this.user = response.data;
SharedData.userData = this.user; // inject in the service and create a object in factory ob ject to store user data..
return response.data;
}, function(error) {
return $q.reject(error.data);
});

};

}]);

Controller

var app = angular.module("app", []);
app.controller("testController", ["$scope",'SharedData','Auth',
function($scope,SharedData,Auth) {

$scope.user ={};
// do a service call via service and check the shared data which is factory object ...
var user = Auth.getUser().then(function(res){
console.log(SharedData);
$scope.user = SharedData.userData;// assigning to scope.
});


}]);

在 HTML 中

<body ng-app='app'>
<div class="media-list" ng-controller="testController">

<pre> {{user | json}}</pre>

</div>

</body>

关于javascript - 如何从 Angular 服务中的 API 获取数据并将其存储以供将来任何人使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40203101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com