1

资源:

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){});

结果:

在此处输入图像描述

Angularjs 构建了一个错误的 url,/api/tickets但它应该是/api/tickets/2/owner. 任何想法为什么?

4

1 回答 1

5

@表示 Angular 应该在数据对象上查找属性,这是 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){});
于 2013-05-21T22:47:29.820 回答