2013-05-21 98 views
1

資源:Angularjs資源建立錯誤的資源鏈接

angular.module('TicketService', ['ngResource']) 
     .factory('Ticket', ['$resource', function($resource){ 
    var Ticket = $resource('/api/tickets/:id1/:action/:id2', 
    { 
     id1:'@id' 
    }, 

    { 
     list: { 
      method: 'GET' 
     }, 
     listByOwner: { 
      method: 'GET', 
      params: { 
       action:'owner', 
       id1:"@id" 
      } 
     } 
     update: { 
      method: 'PUT', 
      params:{} 
     } 
    }); 
    return ticket; 
}]); 

查詢:

$scope.userTickets = Ticket.listByOwner({ 
    id : $rootScope.user.id 
}, function(){ 
    //success 
}, function(response){}); 

結果:

enter image description here

Angularjs構建了一個錯誤的URL,/api/tickets但它應該是/api/tickets/2/owner 。任何想法爲什麼?

+0

您確定$ rootScope.user.id不是undefine d? –

+0

@MarekTakac nope它被設置 –

回答

5

@表示角度應該查找數據對象上的屬性,這是Ticket服務方法中的第二個參數(可選)。在第一個參數中指定請求參數。有您能解決這個問題有兩種方式:

  • 添加一個空對象作爲第一個參數
$scope.userTickets = Ticket.listByOwner({},{ 
    id : $rootScope.user.id 
}, function(){ 
    //success 
}, function(response){}); 
  • 或重命名請求參數對象鍵(idid1):
$scope.userTickets = Ticket.listByOwner({ 
    id1 : $rootScope.user.id 
}, function(){ 
    //success 
}, function(response){});