我正在尝试从JS中的Polymer中的JSON文件中读取子数组,并返回要在dom-repeat
中使用的子数组。但是,它告诉我子数组是未定义的。我尝试以各种方式重新构造JSON文件,但没有运气。我想我在某个地方没有使用正确的语法。
现在JSON看起来像这样:
{
"url": "dn8",
"volpage": "DN iii 1",
"languages": [{
"pt": {
"authors": ["Laera"],
"titlelan": "Title in Portuguese"
},
"fr": {
"authors": ["Moi"],
"titlelan": "Title in French"
},
"es": {
"authors": ["Jesus"]
}
}]
}
我正在尝试获取一个名为languageData
的子数组,它只保存输入语言的特定数据。输入具有inputLanguage
的正确值,例如“pt”。我的JS看起来像这样:
Polymer({
is: 'test-data',
properties: {
inputUrl: String,
inputLanguage: String,
inputData: {
type: Array,
notify: true,
value: function(){return []}
},
languageData: {
type: Array,
computed: '_computeLanguage(inputData,inputLanguage)'
}
},
_computeLanguage: function(inputData,inputLanguage) {
var lanarray = inputData.languages[inputLanguage];
return lanarray ? lanarray : "";
}
});
非常感谢任何帮助!
答案 0 :(得分:1)
正如您所看到的,JSON的languages
属性不是Object
而是Array
。
您的"聚合物代码"效果很好,问题是你试图让languageData
好像是一个数组:
var lanarray = inputData.languages[inputLanguage];
实际上,languages
包含一系列对象,您无法以这种方式找到您的lang对象。
可能的解决方案可能是:
var lanarray = inputData.languages[0][inputLanguage];