programing

리소스 서비스를 사용할 때 매개 변수를 전달하는 방법

itsource 2023. 2. 13. 21:21
반응형

리소스 서비스를 사용할 때 매개 변수를 전달하는 방법

매우 신참다운 질문입니다.

공장 출하 시 방법을 사용하여 리소스 개체를 구축하려고 합니다.

.factory('Magazines', [function ($resource) {

    var url = document.URL;
    var urlArray = url.split("/");
    var organId = urlArray[urlArray.length-1];

    return $resource('http://localhost/ci/api/magazines/:id', {
        loginID : organEntity,
        password : organCommpassword,
        id : organId
    });
  }])

이 방법은 모든 매개 변수가 미리 정의되어 있고 organEntity 및 organCommpassword가 태그 내부에 정의되어 있으므로 간단합니다.

이제 다른 리소스 개체의 경우 팩토리 호출 시 매개 변수를 전달해야 합니다.

이 자원 오브젝트의 발신 코드는 다음과 같습니다.

.controller('ResrouceCtrl', function($scope, Magazines) {
      $scope.magazines = Magazines.query();
});

query() 메서드는 다음 파라미터를 추가할 수 있습니다.Magazines.query(params, successcb, errorcb);

파라미터만 전달하면 공장에서 파라미터를 받을 수 있나요?이러한 전달 파라미터를 공장 출하 시 방법으로 지정하는 방법은 무엇입니까?

예를 들어 url에서 organId를 얻을 수 없게 된 경우 컨트롤러에서 organId를 전달할 필요가 있습니다.공장에서의 organId는 어떻게 받을 수 있습니까?


리소스 js는 다음과 같습니다.

.factory('MagComments', function ($resource) {


    return $resource('http://localhost/dooleystand/ci/api/magCommenct/:id', {
      loginID : organEntity,
      password : organCommpassword,
      id : '@magId' //pass in param using @ syntax
    });
  })

컨트롤러는 다음과 같습니다.

$scope.magComments = MagComments.query({magId : 1});

매개 변수를 전달하려고 했지만 오류가 발생했습니다.

당신의 문제를 알 것 같아요, 당신은 그 약물을 사용해야 합니다.@이 방법으로 전달할 파라미터를 정의하기 위한 구문.또한 어떤 로그인인지 알 수 없습니다.ID나 패스워드는 어디서도 정의하지 않고 URL 파라미터로 사용되고 있지 않은 것 같습니다만, 쿼리 파라미터로 송신되고 있습니까?

지금까지 본 내용을 바탕으로 다음과 같이 제안할 수 있습니다.

.factory('MagComments', function ($resource) {
    return $resource('http://localhost/dooleystand/ci/api/magCommenct/:id', {
      loginID : organEntity,
      password : organCommpassword,
      id : '@magId'
    });
  })

@magId문자열은 리소스를 대체할 것을 지시합니다.:id재산과 함께magId매개 변수로 전달합니다.

여기 있는 문서를 주의 깊게 읽고(약간 불투명하다는 것을 알고 있습니다) 마지막 예시를 보면 많은 도움이 될 것입니다.

다음을 사용하는 것이 좋습니다.provider사용하기 전에 먼저 설정하고 싶은 경우(서비스/공장에 대해) 제공이 좋습니다.

예를 들어 다음과 같습니다.

.provider('Magazines', function() {

    this.url = '/';
    this.urlArray = '/';
    this.organId = 'Default';

    this.$get = function() {
        var url = this.url;
        var urlArray = this.urlArray;
        var organId = this.organId;

        return {
            invoke: function() {
                return ......
            }
        }
    };

    this.setUrl  = function(url) {
        this.url = url;
    };

   this.setUrlArray  = function(urlArray) {
        this.urlArray = urlArray;
    };

    this.setOrganId  = function(organId) {
        this.organId = organId;
    };
});

.config(function(MagazinesProvider){
    MagazinesProvider.setUrl('...');
    MagazinesProvider.setUrlArray('...');
    MagazinesProvider.setOrganId('...');
});

이제 컨트롤러:

function MyCtrl($scope, Magazines) {        

        Magazines.invoke();

       ....

}

언급URL : https://stackoverflow.com/questions/19365714/how-to-pass-in-parameters-when-use-resource-service

반응형