Polymer JS 从 JSON 文件读取
Polymer JS reading from JSON file
我正在尝试从 JS 中的 Polymer 中的 JSON 文件中读取一个子数组,并 return 将在 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 : "";
}
});
非常感谢任何帮助!
如您所见,JSON 的 languages
属性 不是 Object
,而是 Array
.
您的 "Polymer code" 运行良好,问题是您试图将 languageData
当作数组来获取:
var lanarray = inputData.languages[inputLanguage];
实际上,languages
包含一个对象数组,您无法通过这种方式找到您的 lang 对象。
可能的解决方案是:
var lanarray = inputData.languages[0][inputLanguage];
我正在尝试从 JS 中的 Polymer 中的 JSON 文件中读取一个子数组,并 return 将在 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 : "";
}
});
非常感谢任何帮助!
如您所见,JSON 的 languages
属性 不是 Object
,而是 Array
.
您的 "Polymer code" 运行良好,问题是您试图将 languageData
当作数组来获取:
var lanarray = inputData.languages[inputLanguage];
实际上,languages
包含一个对象数组,您无法通过这种方式找到您的 lang 对象。
可能的解决方案是:
var lanarray = inputData.languages[0][inputLanguage];