Pet*_*rne 1 service json angularjs rootscope
我正在尝试加载一些JSON并使用$ rootScope存储它,以便它在控制器之间保持不变.当我运行我的应用程序时,我收到以下错误:
TypeError: Cannot call method 'get' of undefined
Run Code Online (Sandbox Code Playgroud)
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 }]);
Run Code Online (Sandbox Code Playgroud)
我的控制器看起来像这样:
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 });
Run Code Online (Sandbox Code Playgroud)
您在定义工厂时使用"阵列模式".您应该在函数中使用的每个服务都有一个字符串,但只有一个.
也就是说,你做的是
app.factory('quizService', ['$rootScope', function ($scope, $rootScope, $http) {
//insert code
}]);
Run Code Online (Sandbox Code Playgroud)
但你应该做的是
app.factory('quizService', ['$scope', '$rootScope', '$http', function ($scope, $rootScope, $http) {
//insert code
}]);
Run Code Online (Sandbox Code Playgroud)
AngularJS将使用字符串命名的函数映射到参数.试试看,看看它是否解决了你的问题.
编辑:啊,Reboog711的答案在解决问题时更有意义,我不知道错过了代码的后半部分.但是我要留下这个答案,因为你还应该修复工厂定义.
| 归档时间: |
|
| 查看次数: |
8086 次 |
| 最近记录: |