Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用UseStaticFileLoader加载嵌套json进行角度转换_Javascript_Json_Angularjs_Angular Translate - Fatal编程技术网

Javascript 使用UseStaticFileLoader加载嵌套json进行角度转换

Javascript 使用UseStaticFileLoader加载嵌套json进行角度转换,javascript,json,angularjs,angular-translate,Javascript,Json,Angularjs,Angular Translate,我有这样一个嵌套的json结构 { "module1": { "component1": "text1", "component2": "text2" } } 因此,在我的代码中,我使用的是{“module1.component1”| translate},如果我这样做,它永远不会得到解析 { "component1": "text1",

我有这样一个嵌套的json结构

    {
        "module1": {
            "component1": "text1",
            "component2": "text2" 
        }   
    }
因此,在我的代码中,我使用的是
{“module1.component1”| translate}
,如果我这样做,它永远不会得到解析

    {      
        "component1": "text1",
        "component2": "text2"           
    }
{“component1”| translate}
有效。有没有一种方法可以使用
useStaticFileLoader

编辑1: 下面是我的UseStaticFileLoader配置,如下所示:

$translateProvider.useStaticFilesLoader({
        prefix: './langfiles/',
        suffix: '.json'
      });
    $translate.use(lang);//lang is derived from header 
文件包括: en_US.json等

看看这篇文章:看看这是否有帮助。他们的JSFIDLE展示了如何做到这一点:

//包括ngTranslate
angular.module(“ngTranslate”,[“ng”]).config([“$provide”,函数(n){
$TranslateProvider=函数(){
var n,t={};
this.translations=函数(n,r){
如果(!n&&!r)返回t;
if(n&&!r){
if(angular.isString(n))返回t[n];
t=n
}否则t[n]=r
},this.uses=函数(r){
如果(!r)返回n;
如果(!t[r])抛出错误(“$translateProvider无法找到langKey的translationTable:“+r+””);
n=r
},这个.$get=[“$interpolate”,“$log”,函数(r,a){
return$translate=函数(e,i){
var l=n?t[n][e]:t[e];
返回l?r(l)(i):(a.warn(“不存在对“+e+”的翻译”),e)
}
}]
},n.provider(“$translate”,$TranslateProvider)
}]),angular.module(“ngTranslate”)。指令(“translate”、[“$filter”、“$interpolate”,函数(n,t){
var r=n(“翻译”);
返回{
限制:“A”,
范围:!0,
链接:功能(n、a、e){
e、 $observe(“translate”),函数(r){
n、 translationId=angular.equals(r,“”)?t(a.text())(n.$parent):r
}),e.$observe(“值”),函数(t){
n、 插值图=t
}),n.$watch(“translationId+插值图”,函数(){
a、 html(r(n.translationId,n.interpolateParams))
})
}
}
}]),angular.module(“ngTranslate”).filter(“translate”),[“$parse”,“$translate”,函数(n,t){
返回函数(r,a){
返回角度。等深线(a)|(a=n(a)(),t(r,a)
}
}]);
//配置模块,要求将ngTranslate作为依赖项
var-app=angular.module('myApp',['ngTranslate']);
//配置$translateProvider
app.config(['$translateProvider',function($translateProvider){
//只需将转换表注册为对象哈希
$translateProvider.translations('en'{
“搜索”:{
“搜索”:“Recherce”,
“能力”:“能力”,
“管理”:“管理能力”,
“个人”:“个人适合性”
},
“能力”:{
“标题”:“此处测试标题”,
“咨询”:{
“头衔”:“咨询技能”,
“问题”:[{
“类型”:“A”,
“级别”:“45”,
“描述”:“你能告诉我你有多棒吗?”
}, {
“类型”:“B”,
“等级”:“100”,
“描述”:“告诉我你的邪恶项目”
}]
}
},
“标题”:“哦,不!”,
“SUB_标题”:“看起来你并不了不起”
});
变量列表=$translateProvider.translations('en');
控制台日志(列表);
var getTitle=list.HEADLINE;
var getSearch=list.SEARCH.ABILITY;
console.log(getSearch);
console.log(getTitle);
}]);

是否使用翻译过滤器?请通过plunker或stackoverflow代码编辑器发布控制器/创建运行示例。通过“json”进行过滤可以很好地处理这两种数据,因此您的翻译过滤器很可能就是问题所在。@Enkode:我不确定您是否遵循了我的问题。正如问题中提到的,当我尝试获取平面json文件时没有问题,但问题是当存在嵌套的json数据时,角度转换过滤器(如{“this.is.nested.data”| translate})无法解析路径,而这可以{“data”| translate}。无论如何,如果您需要更多信息,请告诉我。我不理解您的问题,因为您没有明确表示您正在使用$translateProvider。