2013-05-21 111 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){});