2016-09-07 2 views
0

세 가지 경로를 통해 리소스 restparameter에 액세스해야하는 클라이언트를 작성 중입니다. 경로는 resource/:resourceId/restparameter, restparameter/:restparameterId/restparameterrestmethod/:restmethodId/restparamter입니다. $location을 사용하여이 작업을 시도했지만 작동하지 않습니다. 예를 들어, path:http://localhost:8085/output/#/restmethod/54/restparameter을 통해 rest 매개 변수에 액세스하려고하면 클라이언트는 다음을 호출합니다 : GET http://localhost:8085/WSAT/multirestparameterManager/restparameter/restparameter, 분명히 404 찾을 수 없음. 나는 심지어 GET http://localhost:8085/WSAT/multirestparameterManager/restmethod/restparameter 내 컨트롤러를 호출하지 않기 때문에 그것은, 만약 일치에 가지 않는 것을 추측하고있어 이것이다 : $resource 개체를 만드는 동안angularjs에서 동일한 리소스에 대해 다른 경로를 선택하는 방법은 무엇입니까?

WSAT.controller('restparameterCtrl',['$scope','$resource','$location','$route','$routeParams','popupService', 'restparameterFactory', 
    function($scope,$resource, $location, $route,$routeParams,popupService, restparameterFactory, $window) 
    { $scope.$location = {}; 
     var result = $location.url(); 

     if(result.includes("restparameter")){var Restparameter = $resource('http://localhost\\:8085/WSAT/multirestparameterManager/restparameter/:restparameterId/restparameter/'); 
     $scope.restparameters = Restparameter.get({restparameterId: $routeParams.restparameterId});} 

     else if(result.includes("resource")){var Restparameter = $resource('http://localhost\\:8085/WSAT/multirestparameterManager/resource/:resourceId/restparameter/'); 
     $scope.restparameters = Restparameter.get({resourceId: $routeParams.resourceId});} 

     else if(result.includes("restmethod")){var Restparameter = $resource('http://localhost\\:8085/WSAT/multirestparameterManager/restmethod/:restmethodId/restparameter/'); 
     $scope.restparameters = Restparameter.get({restmethodId: $routeParams.restmethodId});} 

답변

0

당신은 paramDefaults 전달되지 않습니다.

:restparameterId 매개 변수가 전달 된 개체에서 가져와야하는 경우 기본 매개 변수 {restparameterId:'@id'}을 전달하여 각도를 말해야합니다.

기타는 동일합니다.

자세한 내용은 $ngResource을 확인하십시오.

if (result.includes("restparameter")) { 
    var Restparameter = $resource('multirestparameterManager/restparameter/:restparameterId/restparameter/',{restparameterId:'@id'}); 
    $scope.restparameters = Restparameter.get({ restparameterId: $routeParams.restparameterId }); 
} else if (result.includes("resource")) { 
    var Restparameter = $resource('multirestparameterManager/resource/:resourceId/restparameter/',{resourceId:'@id'}); 
    $scope.restparameters = Restparameter.get({ resourceId: $routeParams.resourceId }); 
} else if (result.includes("restmethod")) { 
    var Restparameter = $resource('multirestparameterManager/restmethod/:restmethodId/restparameter/',{restmethodId:'@id'}); 
    $scope.restparameters = Restparameter.get({ restmethodId: $routeParams.restmethodId }); 
} 
+0

매개 변수는 여기에서 문제가됩니다. 특정 경로 만 사용하고 get 메서드가 작동하기 때문에 매개 변수를 개별적으로 시도했기 때문입니다. 나는 if() {} else if() 조건이 잘못되었다는 느낌을 가지고 있지만, 세 가지 경로 중에서 선택할 다른 논리를 사용할 수 없습니다. – natalw

+0

아니요. 그렇게 생각하지 않습니다. 문서를 읽어주십시오. –

0

$ resource 객체를 사용하는 동안 매개 변수를 전달해야합니다.

var URL = 'http://localhost\\:8085/'; 
var Restparameter = $resource(URL +"WSAT/multirestparameterManager/:masterpath/:Id/restparameter/", "{Id:'@Id'}", { 
    }); 

if (result.includes("restparameter")) { 

    $scope.restparameters = Restparameter.get({ Id: $routeParams.restparameterId }); 

} else if (result.includes("resource")) { 

    $scope.restparameters = Restparameter.get({ Id: $routeParams.resourceId }); 

} else if (result.includes("restmethod")) { 

    $scope.restparameters = Restparameter.get({ Id: $routeParams.restmethodId }); 
} 
관련 문제