2014-09-19 4 views
0
angular.module('app') 
    .factory('Answers', function ($resource, $routeParams, $location) { 
    return $resource('api/answers?questionid=' + $routeParams.questionId, { 
     answerId: '@_id' 
    }, { 
     update: { 
     method: 'PUT' 
     } 
    }); 
    }); 

$scope.findAnswers = function() { 
    Answers.query(function(answers) { 
    $scope.answers = answers; 
    }); 
}; 

다른 경로를 통해 앱을 탐색 할 때 $routeParams 변수가 업데이트되지 않는 것처럼 보입니다. 케이스가 서비스인가요? 내 컨트롤러에서 변수를 정의한 다음 내 서비스에 전달해야한다고 생각하니?각도 공장 경로 매개 변수가 변경되지 않습니다.

편집 :

angular.module('intquestApp') 
    .factory('Answers', function ($resource, $routeParams, $location) { 
    return { 
     get: function(questionId) { 

      return $resource('api/answers?questionid=' + questionId, { 
      update: { 
       method: 'PUT' 
      } 
      }); 
     } 
    }; 
    }); 

    Answers.get($routeParams.questionId, function(answers) { 
    console.log(answers); 
    $scope.answers = answers; 
    }); 

답변

0

나는 접근 방식 대신 컨트롤러에 $routeParams를 주입하고 서비스에 가치를 전달하는 것입니다 생각합니다.

는 여기를 참조하십시오 : Use $routeParams in service 그래서

당신의 컨트롤러 내부 :

Answers.get(passRouteParamValueHere, function(answers) { 
    $scope.answers = answers; 
}); 

편집

가 왜 getupdate을해야합니까? 여기에 당신이 시도 할 수 있지만, 테스트하지 않았습니다 뭔가 :

.factory('Answers',['$resource', function ($resource) { 
    return $resource('/api/answers/?questionid=' + questionId, {}, { 
    get: { method: 'GET'} 
    }); 
}]) 

는하지만이 방법을 선호 : 다음

.factory('Answers',['$resource', function ($resource) { 
    return $resource('/api/answers/:qid', {}, { 
    get: { method: 'GET'} 
    }); 
}]) 

과 :

Answers.get({qid: questionIDFromRouteParam}, function(answers) { 
    $scope.answers = answers; 
}); 

그냥 조금 청소기

+0

편집을 내 질문에 내가 가진 것 ... 아무것도 돌아 오지 않는다. 구문 적으로 어떤 것이 있습니까? –

+0

전달 중입니다. 다시 봐라, jsut은 서비스 헤더에서 그것을 꺼내는 것을 잊었다. –

+0

이것이 효과가 없었습니까? – tommyd456

관련 문제