问题
I am new to AngularJS. I just want to load the JSON file data into a variable that is located in factory.
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.
[
{
"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.
回答1:
You can use $http to read json file. E.g.
$http.get('someFile.json').success(function(data) {
questions = data;
});
回答2:
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:
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:
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.
来源:https://stackoverflow.com/questions/30394451/store-json-data-into-a-variable