2013-03-02 19 views
3

我想映射默認AngularJS $資源行動:

'get': {method:'GET'} 
    'save': {method:'POST'} 
    'query': {method:'GET', isArray:true} 
    'remove': {method:'DELETE'} 
    'delete': {method:'DELETE'} 

這些5個Rails的REST風格的路線:

'show': {method:'GET'}     -> get 
    'create': {method:'POST'}    -> save 
    'update': {method:'PUT'}     -> save 
    'index': {method:'GET', isArray:true} -> query 
    'delete': {method:'DELETE'}    -> remove or delete 

除了save之外,一切都映射得很好。它適用於create作爲POST請求。但我想,當我保存有一個id != null

# This factory needs a smarter $save() method 
myServices.factory 'Message', ['$resource', ($resource) -> 
    Message = $resource "api/users/:user_id/messages/:id", 
     user_id: '@user_id' 
     id: '@id' 
    , 
     # update should not be needed 
     update: 
      method: 'PUT' 

    Message 
] 


myApp.controller "UsersShowCtrl", ["$scope", "$routeParams", "User", "Message", ($scope, $routeParams, User, Message) -> 
    $scope.user = User.get({id: $routeParams.user_id}) 
    $scope.myMessage = new Message {user_id: $routeParams.user_id} 

    $scope.submitMyMessage = -> 
     # This should just be: 
     # $scope.myMessage.$save() 
     # rather than: 
     unless $scope.myMessage.id? 
      $scope.myMessage.$save() 
     else 
      $scope.myMessage.$update() 

] 

我最終會想修改提交PARAMS也讓我可以將它們命名空間中的資源將其更改爲一個PUT請求默認軌嵌套參數即params[:message]而不是直接將它們附加到根params字符串,但首先我需要知道如何最好地修改$資源。

+0

請問這是什麼語言?有趣的是,你寫作角度,但方式更像你談論的紅寶石......它如何編譯爲js?瀏覽器是否知道這一點? – deadManN 2015-10-31 09:09:03

回答

1

關閉我的頭頂,這個save()方法怎麼樣?

myServices.factory 'Message', ['$resource', ($resource) -> 
    Message = $resource "api/users/:user_id/messages/:id", 
     user_id: '@user_id' 
     id: '@id' 
    , 
     # update should not be needed 
     update: 
      method: 'PUT' 

    Message::save = -> 
     if @id? 
      @update() 
     else 
      @create() 

    Message 
] 
+1

謝謝,這適用於一種資源,但我寧願不必將其添加到每個資源。我寧願擴展$ resource模塊來響應這個不同的api,但我不明白javascript和Angular足夠好。 – smothers 2013-03-02 20:27:28

相關問題