2013-07-31 120 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