将JSON数据存储到变量中

时间:2022-12-30 15:42:33

I am new to AngularJS. I just want to load the JSON file data into a variable that is located in factory.

我是AngularJS的新手。我只想将JSON文件数据加载到位于工厂的变量中。

myApp.factory('quizFactory', function () {
    var questions = [
        {
            "setId":1,
            "question":"What is the value of the 7 in the following number? 850,765",
            "options": ["70", "7", "7000", "700"],
            "answer": 3
        },
        {
            "setId":2,
            "question":"Is 7 & 9 even or odd?",
            "options": ["Even", "Odd", "Can't Say", "Dont know"],
            "answer": 1
        },
        {
            "setId":3,
            "question":"In the number 5,281,946 what is the value of the 3rd place?",
            "options": ["100", "10,000", "1,000,000", "1,000"],
            "answer": 0 
        },
        {
            "setId":4,
            "question":"Is 12 + 50 even or odd?",
            "options": ["Even", "Odd", "Can't Say", "Dont know"],
            "answer": 0 
        },
        {
            "setId":5,
            "question":"What does the 3 represent in the number below? 3051",
            "options": ["3", "30", "300", "3000"],
            "answer": 3 
        }
    ];

    return {
        getQuestion: function(id) {
            if(id < questions.length) {
                return questions[id];
            } else {
                return false;
            }
        }
    };
});

The above code is stored in app.js file and my JSON file is same as the above.

上面的代码存储在app.js文件中,我的JSON文件与上面的相同。

[


{
        "setId":1,
        "question":"What is the value of the 7 in the following number? 850,765",
        "options": ["70", "7", "7000", "700"],
        "answer": 3
    },
    {
        "setId":2,
        "question":"Is 7 & 9 even or odd?",
        "options": ["Even", "Odd", "Can't Say", "Dont know"],
        "answer": 1
    },
    {
        "setId":3,
        "question":"In the number 5,281,946 what is the value of the 3rd place?",
        "options": ["100", "10,000", "1,000,000", "1,000"],
        "answer": 0 
    },
    {
        "setId":4,
        "question":"Is 12 + 50 even or odd?",
        "options": ["Even", "Odd", "Can't Say", "Dont know"],
        "answer": 0 
    },
    {
        "setId":5,
        "question":"What does the 3 represent in the number below? 3051",
        "options": ["3", "30", "300", "3000"],
        "answer": 3 
    }
];

I have tried this question too.

我也试过这个问题。

3 个解决方案

#1


3  

You can use $http to read json file. E.g.

您可以使用$ http来读取json文件。例如。

$http.get('someFile.json').success(function(data) {    
        questions = data;
    });    

#2


0  

You can redefine your factory like this :

您可以像这样重新定义工厂:

  angular.module('yourmodule')
 .factory('jsonResourceService', ['$http',
function($http) {
  var jsonResourceService = {};

  jsonResourceService.load = function(callback) {
    $http.get('path/data.json').success(function(data) {
      callback(data);
    });
   return jsonResourceService;


}
]);

and call it from your controller like this :

并从控制器中调用它,如下所示:

     $scope.objectsArray = [];

  jsonResourceService.load(function(data) {
 $scope.objectsArray;
}); 

#3


0  

If I want to add the JSON data to the factory variable on the some particular request inside a controller is what you meant, then $http is the preferable one:

如果我想在控制器内部的某个特定请求上将JSON数据添加到工厂变量是你的意思,那么$ http是最好的:

     appmodule.controller('appCtrl',   ['$http','quizFactory',function($http,quizFactory){
        $http('somefile.json').success(function(data){
           quizFactory.questions=data;  
        }
     })

Here note that you have to dependency inject the factory, and yes, it is not necessary to manually parse the data, Angular will automatically look after it.

这里注意你必须依赖注入工厂,是的,没有必要手动解析数据,Angular会自动关注它。

#1


3  

You can use $http to read json file. E.g.

您可以使用$ http来读取json文件。例如。

$http.get('someFile.json').success(function(data) {    
        questions = data;
    });    

#2


0  

You can redefine your factory like this :

您可以像这样重新定义工厂:

  angular.module('yourmodule')
 .factory('jsonResourceService', ['$http',
function($http) {
  var jsonResourceService = {};

  jsonResourceService.load = function(callback) {
    $http.get('path/data.json').success(function(data) {
      callback(data);
    });
   return jsonResourceService;


}
]);

and call it from your controller like this :

并从控制器中调用它,如下所示:

     $scope.objectsArray = [];

  jsonResourceService.load(function(data) {
 $scope.objectsArray;
}); 

#3


0  

If I want to add the JSON data to the factory variable on the some particular request inside a controller is what you meant, then $http is the preferable one:

如果我想在控制器内部的某个特定请求上将JSON数据添加到工厂变量是你的意思,那么$ http是最好的:

     appmodule.controller('appCtrl',   ['$http','quizFactory',function($http,quizFactory){
        $http('somefile.json').success(function(data){
           quizFactory.questions=data;  
        }
     })

Here note that you have to dependency inject the factory, and yes, it is not necessary to manually parse the data, Angular will automatically look after it.

这里注意你必须依赖注入工厂,是的,没有必要手动解析数据,Angular会自动关注它。