서비스 (공장) 및 ngResource를 사용하여 실행 및 동작하는 RESTful 서비스에 요청을 보내고 선택적 결과를 보내는 코드를 작성하려고합니다. 비즈니스 로직을 기반으로합니다.컨트롤러에서 팩토리 서비스로 여러 인수 전달 REST 호출 및 데이터 반환 (선택 사항)
Passing multiple parameters from controller to factory in angularjs에 비슷한 내용의 질문이 있습니다. 나는 그것을 위해 일하는 데 어려움을 겪고 있고 또한 설명이 부족합니다.
나는 그것이 어떻게 작동하는지, 모범 사례를 이해하기 위해이 글을 쓰고 있으며, 장래에 나 자신과 같은 초보자에게 좋은 저장소가있다. 솔루션의 작성자에게 무례 위에서 제공되지하지만 아마도 아직 여기에 ;-)
을 달성 간다 적이 없다 I 영리의 수준 가정
내 컨트롤러
swof.controller('scheduleController', ['$scope', '$log', '$http', '$filter','moment', 'scheduleServicePeriod', function($scope, $log, $http, $filter, moment, scheduleServicePeriod) {
$scope.name = 'scheduleController::set default values and provide function to generate new schedule';
$log.info('Controller: '+ $scope.name);
$scope.years = ["2017", "2018", "2019","2020","2021","2022"];
$scope.selectedYear = "2017";
$scope.selectedPeriod = Math.ceil(moment().format('w')) | 1 ;
$scope.genSchedule = function()
{
// when button is pressed function 'genSchedule' is called that either has default value for selectedYear and selectedPeriod or one user has selected. This bit works
scheduleServicePeriod.post({ s_year: $scope.selectedYear, s_period: $scope.selectedPeriod }).$promise.then(function(data){
$scope.schedulegen = data;
$scope.genScheduleResponse=moment().format('h:mm:ss a') + " " + data.message;
}, function(data) {
$log.error();('Error: ' + data);
})};
}]);
내 공장 서비스
swof.factory('scheduleServicePeriod', function($resource)
{
var data = $resource('/api/schedules/period/:s_year/:s_period',{s_year: "@s_year",s_period: "@s_period" },
{
'post':
{
method: 'POST',
params: {},
isArray:true
}
});
return data;
});
- 값 (그렇지 않으면 기본 또는) 기능 genSchedule 도달을 어떻게됩니까 내 RESTful 웹 서비스
router.route('/schedules/period/:schedule_year/:schedule_period') .post(function(req,res) { // create record var query = getEngineerIDs(); var jsonMessage = "Success: Generated schedule for year = " + req.params.schedule_year + " and period starting week number = " + req.params.schedule_period ; console.log(parseInt(req.params.schedule_period%2),parseInt(req.params.schedule_period)); query.exec(function(err,records) { if(err) return console.log(err); var results = SwfFn.populateCalendar(SwfFn.assignEngineers(records),+ req.params.schedule_year,req.params.schedule_period); if (results.length == 0 ) { jsonMessage = "Failed: Start year/week in past"; } console.log(jsonMessage); for (var count in results) { Schedule.findOneAndUpdate ( { ymd: results[count].ymd, shift: results[count].shift }, results[count], {upsert: true, new: true, runValidators: true}, function (err,res) { if (err) res.send(err); } ); } res.json({message: jsonMessage }); }); })
.
- RESTful 서비스에 도달하는 값은 '정의되지 않음' '정의되지 않음'입니다.
- 문제는 공장 서비스와 관련이 있습니다.
- 작동하지 않는 유사한 솔루션이 있습니다 (위)
- 컨트롤러에서 서비스로 JSON 하나만 보내야한다고 알고 있지만 공장 측에서 처리하는 방법을 잘 모르겠습니다. .
- 나는 (아직) 검색 부분을 사용할 수 없지만 지금은 기다릴 수 있습니다.
감사합니다.
https://docs.angularjs.org/api/ngResource/service/$resource에서 찾을 수 있습니다. 여전히 그것을 읽지 만 조금 다른 방식으로 (원하는 방식으로 코드가 구조화되어) 원하는 것을 주소라고 생각합니다. – GerM