将 JSON 数据存储到变量中
Store JSON data into a variable
我是 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;
}
}
};
});
以上代码存储在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
}
];
我也试过了this question
您可以使用$http 读取json 文件。例如
$http.get('someFile.json').success(function(data) {
questions = data;
});
您可以像这样重新定义您的工厂:
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;
}
]);
然后像这样从你的控制器调用它:
$scope.objectsArray = [];
jsonResourceService.load(function(data) {
$scope.objectsArray;
});
如果我想在控制器内的某个特定请求上将 JSON 数据添加到工厂变量就是你的意思,那么 $http
是更好的选择:
appmodule.controller('appCtrl', ['$http','quizFactory',function($http,quizFactory){
$http('somefile.json').success(function(data){
quizFactory.questions=data;
}
})
这里需要注意的是factory需要依赖注入,是的,不需要手动解析数据,Angular会自动处理。
我是 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;
}
}
};
});
以上代码存储在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
}
];
我也试过了this question
您可以使用$http 读取json 文件。例如
$http.get('someFile.json').success(function(data) {
questions = data;
});
您可以像这样重新定义您的工厂:
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;
}
]);
然后像这样从你的控制器调用它:
$scope.objectsArray = [];
jsonResourceService.load(function(data) {
$scope.objectsArray;
});
如果我想在控制器内的某个特定请求上将 JSON 数据添加到工厂变量就是你的意思,那么 $http
是更好的选择:
appmodule.controller('appCtrl', ['$http','quizFactory',function($http,quizFactory){
$http('somefile.json').success(function(data){
quizFactory.questions=data;
}
})
这里需要注意的是factory需要依赖注入,是的,不需要手动解析数据,Angular会自动处理。