다음 팩토리를 사용하여 API에서 데이터를 가져 와서 apiData라는 로컬 변수에 저장합니다. 그것은 다른 컨트롤러 또는 더 나은 내가 사용하는 로컬 스토리지 또는 cacheFactory 사이의 약속을 공유 할 수있는 좋은 방법AngularJS의 컨트롤러간에 데이터 공유
$routeProvider
.when('/myview', {
templateUrl: 'views/myview.html',
controller: 'MyController',
resolve: {
queryset: function(MyFactory){
return MyFactory.getApiData();
}
}
})
app.controller('MyController', ['$scope', 'queryset',
function ($scope, queryset) {
$scope.queryset = queryset;
}
]);
인가 :
app.factory('MyFactory', function($resource, $q) {
var apiData = [];
var service = {};
var resource = $resource('http://example.com/api/sampledata/');
service.getApiData=function() {
var itemsDefer=$q.defer();
if(apiData.length >0) {
itemsDefer.resolve(apiData);
}
else
{
resource.query({},function(data) {
apiData=data;
itemsDefer.resolve(data)
});
}
return itemsDefer.promise;
};
service.add=function(newItem){
if(apiData.length > 0){
apiData.push(newItem);
}
};
service.remove=function(itemToRemove){
if(apiData.length > 0){
apiData.splice(apiData.indexOf(itemToRemove), 1);
}
};
return service;
});
나는 내 컨트롤러에 다음과 같은 방법을 apiData을 주입?
공유 변수를 현재 상태로 유지할 수 있도록 MyFactory add() 및 remove() 메소드를 다시 작성하려면 어떻게해야합니까? API 업데이트/생성/삭제 호출이 필요하지 않습니다.
감사합니다.
AngularJS 컨트롤러간에 데이터를 공유 할 수 있지만 공유 데이터는 Ajax 호출에서 가져올 수 있습니다.] (http://stackoverflow.com/questions/15097961/sharing-data-between-angularjs-controller-but-having- the-shared-data-come-from) – rxgx