2013-10-21 131 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,但我認爲這可能工作,這不是太測試。

相關問題