gpt4 book ai didi

javascript - Angular : Access stored data in a factory after a $http call

转载 作者:数据小太阳 更新时间:2023-10-29 05:04:06 25 4
gpt4 key购买 nike

我正在尝试建立一个工厂作为我的数据库模型的暂存区,以及一个 api 来执行基本的 CRUD 调用。我希望能够通过将数据存储在服务或工厂中来访问数据,并保留 api 方法,以便我可以在 Controller 中执行此类操作。

$scope.folders =  Folders.data(); // for a factory
$scope.folders = Folders.data; // for a Service

Folders.create({name: "My Stuff, $oid: { 5fwewe033333 }, user_id: CurrentUser.id"});

目前我在 Controller 中使用这样的文件夹工厂。

Folders.foldersData().success( function(data, status) {
$scope.folder = data;
})
.error( function(data,status) {
Flash.warning("There was a problem fetching your data");
});

我知道我可以在 Controller 中解决一个 promise ,但是考虑到我正在处理的项目的规模,我喜欢在服务中访问文件夹模型的想法,而不必进行服务器调用每次我进行更改时同步数据。

angular.module('cmsApp')
.factory('Folders', function($http, $q){

var folders = {};
var messageWarn = "Upload Retrival Failed.";


return {
get: function(){
var defered = $q.defer();

$http.get('/folders').success( function ( data, status ) {
defered.resolve(data);
})
.error( function ( data, status ) {
defered.reject();
Flash.warning(message_warn);
});
defered.promise.then( function (promise)
folders = promise;
});
},
data: function (){
return folders;
},
}
});

我的问题是在调用 Folders.get() 后我无法保持文件夹对象持续存在。它总是在我将 Folders.data() 作为空对象调用后返回。

有没有一种方法可以将此数据作为 Folder 模型的最新表示保存在 Factory 中,而不依赖于每次都访问服务器?

在 Rails 4 API 上运行 angular 1.2.3。

最佳答案

您可以将 promise 作为服务对象存储在服务中。我 fork 了上面的扩展演示来演示 http://plnkr.co/edit/2HqQAiD33myyfVP4DWg3?p=preview

与前面的示例一样,http 调用仅进行一次,但这次 promise 被添加到由工厂创建的服务对象上的文件夹项中。


app.factory('myService', function($http, $q) {

return {

myObject: '',

get: function() {
// Create the deffered object
var deferred = $q.defer();

if(!this.myObject) {
// Request has not been made, so make it
$http.get('my-file.json').then(function(resp) {
console.log('Making the call!');
deferred.resolve(resp.data);
});
// Add the promise to myObject
this.myObject = deferred.promise;
}
// Return the myObject stored on the service
return this.myObject;

}

};

});

关于javascript - Angular : Access stored data in a factory after a $http call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21416298/

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