리소스 서비스를 사용할 때 매개 변수를 전달하는 방법
매우 신참다운 질문입니다.
공장 출하 시 방법을 사용하여 리소스 개체를 구축하려고 합니다.
.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
'programing' 카테고리의 다른 글
선택 상자의 각도, 부울 값 (0) | 2023.02.13 |
---|---|
옵션인 "WHERE" 매개 변수가 있는 저장 프로시저 (0) | 2023.02.13 |
하나의 명령어로 mongo DB를 중지하는 방법 (0) | 2023.02.13 |
Wordpress DB의 어디에 wp_cron 태스크가 저장됩니까? (0) | 2023.02.13 |
Python의 tilde 연산자 (0) | 2023.01.27 |