Polymer JS从JSON文件中读取

时间:2017-04-19 06:55:58

标签: javascript arrays json polymer

我正在尝试从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 : "";
      }

    });

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

正如您所看到的,JSON的languages属性不是Object而是Array

您的"聚合物代码"效果很好,问题是你试图让languageData好像是一个数组:

var lanarray = inputData.languages[inputLanguage];

实际上,languages包含一系列对象,您无法以这种方式找到您的lang对象。

可能的解决方案可能是:

var lanarray = inputData.languages[0][inputLanguage];