2013-10-21 90 views
0

我是新来的角,我仍然在努力处理服务,我有一个应用程序查询服务器进行调查,并在向导中显示调查问题在调查问题是在一个路线(/调查/:surveyId/question/questionId)AngularJS:在具有服务和休息的控制器之间共享数据

我想要做的是加载调查的第一次,然后使用该加载的数据,而不再查询它。

据我了解,我需要一个服务,我使用Restangular,我不知道在我的服务回报,这是我有:

angular.module('surveys') 
    .factory('questionsService', ['Restangular', function (Restangular) { 
     var surveyId = 1; 

     return { 
      questions: Restangular.one("survey", surveyId).getList("questions") 
     } 
} 

,然后在我的控制器我只是做:

questionsService.questions.then(function (questions) { 
      $scope.questions = questions; 
      $scope.currentQuestion = $routeParams.page ? $scope.questions[$scope.currentQuestionIndex] : null; 
     }); 

这是工作,我不知道这是否是正确的方法来做到这一点。

但现在我需要其他的东西在我的服务中,例如获取未答复的问题,这就是我迷失的地方,因为如果我在我的服务中将函数放在getUnansweredQuestions()中,我不知道如何得到问题,我不知道他们是否已经解决。

我不知道我是否足够清楚,但我需要一些建议。

回答

0

尝试这样:

surveys.run(function($rootScope,$http,$q) { 
    function getData() { 
     var deferred = $q.defer(); 
     $http(insertConfigObjectHere) 
     .success(function (data, status, headers, config) { 
      deferred.resolve(data); 
     }) 
     .error (function (data, status, headers, config) { 
      deferred.reject(); 
     }); 
     return deferred.promise; 
    } 
    $rootScope.myData = getData(); 
} 

警告:我是新来的太AngularJS,但我认为这可能工作,这不是太测试。

相关问题