我有一个函数,我用$http.get()
加载了两个本地json文件。加载这些文件后,我想将它合并到一个json文件中。我用$.extend()
尝试了这个,我在JQuery文档中找到了它。
在$http.get()
次调用中打印出我的变量,我可以在控制台中看到我的变量和回调是正确的。当我打印合并变量时,它仍然是空的。怎么了?
第一个JSON文件:
{
"Default_Default_Add": "Hinzufügen",
"Default_Default_AllInRibbon": "Alle im Band",
"Default_Default_ApplicationMode_Development": "Entwicklung",
"Default_Default_ApplicationMode_Education": "Schulung",
"Default_Default_ApplicationMode_Production": "Produktion",
"Default_Default_ApplicationMode_Testing": "Test",
"Default_Default_Back": "Zurück"
}
第二个JSON文件:
{
"Default_Return_Success": "Erfolg",
"Success_Success_ChangePassword": "Passwort erfolgreich geändert",
"Success_Success_DefaultRole": "Standardrolle wurde gesetzt",
"Success_Success_Delete": "Erfolgreich gelöscht",
"Success_Success_DeleteApplicationSetting": "ApplicationSetting erfolgreich gelöscht",
"Success_Success_DeleteAscertainmentInstrument": "Erhebung erfolgreich storniert. "
}
功能:
loadData() {
let json1: any;
let json2: any;
this.$http.get('../../app/shared/labels/default.de.json').success(function (data) {
json1 = data;
console.log(json1); //PRINT LINE 58
console.log(data); //PRINT LINE 59
});
this.$http.get('../../app/shared/labels/success.de.json').success(function (data) {
json2 = data;
console.log(json2); //PRINT LINE 63
console.log(data); //PRINT LINE 64
});
let json = $.extend({}, json1, json2);
console.log(json); //PRINT LINE 68
return json;
}
我认为某些事情的顺序错误,或是在所有事情都被加载之前快速执行,我不知道。希望得到一些帮助。
!!!编辑!!!:
let json1 = this.$http.get('../../app/shared/labels/default.de.json');
let json2 = this.$http.get('../../app/shared/labels/success.de.json');
let json: any;
this.$q.all([json1, json2]).then(() => {
let json = $.extend({}, json1, json2);
console.log(json);
});
答案 0 :(得分:1)
承诺稍后解决。您正在尝试合并尚未收到的jsons。尝试如下:
var mergedResult=null;
$.when(
this.$http.get('../../app/shared/labels/default.de.json'),
this.$http.get('../../app/shared/labels/success.de.json') )
.done(function( json1, json2 ) {
mergedResult = $.extend({}, json1, json2);
});
答案 1 :(得分:1)
使用Deferreds:
$.when(
this.$http.get('../../app/shared/labels/default.de.json'),
this.$http.get('../../app/shared/labels/success.de.json')
).done( function( a1, a2 ) {
json = $.extend({}, a1, a2);
});