我正在尝试建立一个工厂来充当我的数据库模型的暂存区,以及一个用于执行基本 CRUD 调用的 api。我希望能够通过将数据存储在服务或工厂中来访问数据,并保留 api 方法,以便我可以在控制器中执行类似的操作。
$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"});
目前我在控制器中使用这样的文件夹工厂。
Folders.foldersData().success( function(data, status) {
$scope.folder = data;
})
.error( function(data,status) {
Flash.warning("There was a problem fetching your data");
});
我知道我可以在控制器中解决一个承诺,但是由于我正在处理的项目的大小,我喜欢在服务中访问文件夹模型的想法,而不必进行服务器调用来同步每次我做出改变时的数据。
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() 作为空对象调用后,它总是会回来。
有没有办法将这些数据存储在工厂中,作为文件夹模型的最新表示,而不依赖于每次都访问服务器?
在 Rails 4 API 上运行 angular 1.2.3。