2014-01-22 51 views
1

我正在開發角度的web應用程序。我有這個控制器需要調用restful api來對用戶進行一些操作。定義服務或工廠使用ngResource從服務器端檢索數據?

此前我想定義一個服務,它有一些方法:getAllUser(),getUser(id),saveUser(),deleteUser()。這些方法將使用ngResource來調用rest apis。但是當我看着這些方法時,在我看來,我只是包裝ngResource並公開他的一些較低級別的方法:query(),get(),save(),delete()。

有人可以分享一些關於如何設計使用ngResource從服務器獲取數據的通用服務或工廠或提供者的經驗嗎?

回答

2

讓我約ngResource解釋...

ngResource是AngularJs一個服務,它在槓桿上的$ HTTP服務下,當你想使用RESTful資源使用,所以它的使用方法很簡單吧。這裏是我的例子:

myAppModule.factory('User', ['$resource', function($resource) { 
     return $resource('/user/:userId'} 
]); 

那麼上面的代碼在做什麼?這是創建一個返回資源的服務,url被映射,所以當你注入並調用這個服務時,你會收到一個包含一些方法的對象:「GET」,「POST」,「PUT」,「DELETE」...例子:

var users = User.query(); 

變量「用戶」,接受所有用戶的(加收到這樣節省一些資源的特點,因爲「用戶」變量仍然是一個資源對象),這就像你提出這一要求(.../user /),好嗎?所有你需要做的就是撥打資源,這很簡單。

3

我一直在做一個角度項目我自己。而且我要建人工一個工廠,然後結束了使用JBoss鍛造了我的第二次嘗試,並在一個很不錯的方式建立的東西對我來說,這裏是什麼樣子:

angular.module('myApp').factory('myResource', function($resource){ 

    var urlBase = '/rest/resources'; 

    var resource = $resource(urlBase + '/:RsvpId',{RsvpId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}}); 

    return resource; 
}); 

這是所有有它,那麼當你想調用它,你做的東西像下面這樣:

$scope.save = function() { 
    var successCallback = function(data,responseHeaders){ 
     var id = locationParser(responseHeaders); 
     $location.path('/Resources/edit/' + id); 
     $scope.status = 'success'; 
    }; 
    var errorCallback = function(data, status, headers, config) { 
     $scope.status = 'failure'; 
     $scope.statusMessage = 'Saving your resource failed: ' + $scope.errorMessage; 
    }; 
    myResource.save($scope.resource, successCallback, errorCallback); 
}; 

或做一個GET,你就會有一個方法,這裏面的行:

myResource.get({ResourceId:$routeParams.ResourceId}, successCallback, errorCallback); 

resource.$remove(successCallback, errorCallback); 

希望有幫助。