2017-04-19 10 views
1

JSのPolymerのJSONファイルからサブアレイを読み込み、dom-repeatで使用するサブアレイを返そうとしています。しかし、それはサブアレイが未定義であることを私に伝えます。私は様々な方法でJSONファイルを再構築しようとしましたが、運はありませんでした。私はどこか正しい構文を使用していないと思う。JSONファイルからPolymer JSを読み取る

今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

あなたは、問題のオンライン例を設定することができ、助けるためにはるかに簡単になりますか? ここでそれを行う方法です:http://plnkr.co/edit/k4B2H0whGXROcvXnbx9y?p=preview –

+0

多分お試しください: 'var lanarray = inputData.0.languages [inputLanguage]; ' –

答えて

1

ご覧のとおり、JSONのlanguagesプロパティはObjectではなくArrayではありません。

var lanarray = inputData.languages[inputLanguage]; 

実は、languagesは、オブジェクトの配列が含まれ、あなたがすることはできません。

あなたの「ポリマーコードが」うまく動作しますが、問題は、それが配列であるかのようlanguageDataを取得しようとしているということですこの方法であなたのlangオブジェクトを見つけてください。

可能な解決策は次のようになります。

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

ありがとうございます。それは本当に助けになり、私は今どこが間違っているのか見ることができます。 – Vims

関連する問題