我想加載一些JSON並使用$ rootScope存儲它,以便它在控制器之間持續存在。當我運行我的應用程序,我得到以下錯誤:
TypeError: Cannot call method 'get' of undefined
get方法是完美的工作,直到我試圖引進$ rootScope ...任何想法?
我的服務是這樣的:
1 /**
2 * Service to get the quiz data from a JSON source
3 */
4 app.factory('quizService', ['$rootScope', function ($scope, $rootScope, $http) {
5 var promise;
6 var service = {
7 getQuiz: function($scope, $http) {
8 if (!promise) {
9 promise = $http.get('QuizFileName.quiz').then(function (response) {
10 return response.data;
11 });
12 }
13 return promise;
14 }
15 };
16 return service;
17 }]);
我的控制器看起來是這樣的:
7 // Get Quiz data from service
8 quizService.getQuiz().then(function(data) {
9 $scope.quiz = data;
10
11 // Redirect to scores if already completed this
12 if($scope.quiz.complete === true) {
13 $location.path('scores');
14 }
15 });
+!用於捕捉數組符號問題。 – JeffryHouser
謝謝。有沒有替代數組模式來定義工廠? –
我個人使用這種模式,每次我寫角碼,因爲它被設計爲生存縮小。我個人建議你繼續使用它。正在發生的事情是,在縮小之後,你可能會以'app.factory('quizService',['$ http',function(a){..}]);'結尾,因爲縮小會將變量減少爲像可能。字符串沒有改變,所以角度檢查第一個字符串,並知道變量'a'實際上是'$ http'。 –