【发布时间】:2016-02-17 11:26:50
【问题描述】:
在我的工厂中,如何在从指令返回调用函数之前从 .json 文件中提取(读取)数据?
这是我工厂的定义
(function () {
"use strict";
angular
.module("common.services")
.factory("langService", ["$resource", langService])
function langService($resource) {
var langData = $resource('services/langInfo.json').query();
function getInfo(language){
/*look for a specific code from langData and return*/
}
return {
getInfo: getInfo
}
}
}());
getInfo() 是应该从 langData 变量中查找适当信息并将其返回的函数。
这是来自 langInfo.json 的 json 数据(尚未完成):
[{
"marathi": { },
"hindi": { },
"konkani": { },
"sanskrit": { },
"gujarati": { }
}]
我是 AngularJs 的新手,因此需要帮助。我想 langData 没有解决,因为我尝试使用 console.log 打印它,因此我无法访问它。这就是我得到的
console.log(langData)
顺便说一句,我想做的事情是可能的吗?怎么样?
编辑:
根据 Stian Sandve 的回答,我在调用 langService 时传递了一个回调函数:
langService.getInfo('langCode', function(data) {
console.log(data);
});
并将getInfo的定义改为
function getInfo(language, callback){
langData.query(function(data) {
var filteredData = filter(data); //assume filter() is defined
callback(filteredData);
});
}
所以我在回调函数中获取数据。但是我需要将它设置为在调用 langService.getInfo 之前声明的某个变量。所以是这样的:
var langInfo
langService.getInfo('langCode', function(data) {
console.log(data);
//set data to langInfo
});
【问题讨论】:
-
Angular 是异步工作的,所以这不是它的工作方式。在这里找到了一个关于如何以角度加载 json 数据的好例子:stackoverflow.com/a/16931623/2422125
标签: angularjs angular-resource resolve