2013-07-31 113 views
0

我试图发出请求Angularjs RESTul资源请求

....port/trimService/fragments/?fragment_name=:fragmentName 

但是,如果我努力使“?fragment_name”的参数,它打破。由于我将有更多的请求,我的行动与变化,所以我不能把它留在资源的网址部分。

angular.module(foo).factory('FragmentService', ['$resource', 
function ($resource) 
{ 
    var FragmentService = $resource('.../fragments/:action:fragmentName', 
    {}, 
    { 
     'getFragments': 
     { 
      method: 'GET', 
      isArray: true, 
      params: 
      { 
       fragmentName: "@fragmentName", 
       action: "?fragment_name=" 
      } 
     } 

    }); 
    return FragmentService; 
} 
]); 

截至目前,我不知道我的网址实际上输出了什么。

编辑:我改变了我的资源为/ u/akonsu在下面提到。我还添加了我的控制器,因为它仍然无法正常工作。

angular.module(foo).factory('FragmentService', ['$resource', 
function ($resource) 
{ 
    var FragmentService = $resource('.../fragments/', 
    {}, 
    { 
     'getFragments': 
     { 
      method: 'GET', 
      isArray: true, 
      params: 
      { 
       fragmentName: "@fragmentName", 
      } 
     } 

    }); 
    return FragmentService; 
} 
]); 


angular.module(foo).controller('FragmentController', ['$scope', 'FragmentService', 
function ($scope, FragmentService) 
{ 
    $scope.fragmentQuery = { 
     fragmentName: 'a', 
    }; 


    $scope.fragmentQuery.execute = function() 
    { 
     if ($scope.fragmentQuery.fragmentName == '') 
     { 
      $scope.fragments = {}; 
     } 
     else 
     { 
      $scope.fragments = FragmentService.getFragments(
      { 
       fragmentName: $scope.fragmentQuery.fragmentName, 
      }); 
     } 
    }; 
    $scope.fragmentQuery.execute(); 

} 

]);

+0

它现在发送请求的URL是什么?你能在浏览器的网络标签中看到它吗? – akonsu

+0

是的,我终于能够看到电话,我没有能够,这导致我能够对我的控制器进行适当的更改。谢谢! – Larsbars

回答

1

尝试在资源URL中完全省略查询字符串,并仅将fragmentName作为参数提供给动作调用。如果它不在URL参数列表中,它应该将它添加到查询字符串中。

$resource(".../port/trimService/fragments/").get({fragmentName: 'blah'}) 
+0

这个问题似乎在于?标记在行动中,我无法找到任何解决方法,我真的很想保留查询字符串,因为我以后会有多个请求。 – Larsbars

+0

您可以使用您的查询字符串,正如我所说的,如果您的参数在URL模式中找不到,那么角度会将它们添加到查询字符串中。 – akonsu