2017-12-18 13 views
0

に私はすべてがうまく働いていた、私は値を取得しようとしているアプリケーションを構築しようとしている、非プリミティブな値をキーとして使用しないでください。代わりに文字列/数値を使用してください。 VueJS

ここ

が私のコードです:https://codeshare.io/aY7rX3

しかし、突然、いくつかのエラーが来て開始しました:

避けキーとして非プリミティブ値を使用して、使用する文字列/数値の代わりに

周りのどこか:

<div class="col-sm-4 border-right"> 
    <div> 
     <button @click.prevent="" v-for="(obj, key) in tags" 
       :key="key" 
       class="btn btn-rounded btn-sm" 
       :class="tagParentClass(key)"> 
      {{key}} 
     </button> 
    </div> 
</div> 

tags

export const tags = { 
    Investor: [ 
     {display: "Mutual Fund", value: 'Mutual Fund'}, 
     {display: "Insurance", value: 'Insurance'}, 
     {display: "FII", value: 'FII'}, 
     {display: "PMS", value: 'PMS'}, 
     {display: "Proprietary", value: 'Proprietary'}, 
     {display: "HNI", value: 'HNI'}, 
     {display: "Private Equity", value: 'Private Equity'}, 
     {display: "Others", value: 'Others'} 
    ], 
    Research: [ 
     {display: "Global", value: 'Global'}, 
     {display: "Domestic", value: 'Domestic'}, 
     {display: "Retail", value: 'Retail'}, 
     {display: "Others", value: 'Others'} 
    ], 
    Corporate: [ 
     {display: "Corporate", value: 'Corporate'} 
    ], 
    Others: [ 
     {display: "Debt", value: 'Debt'}, 
     {display: "Debt Adviser", value: 'Debt Adviser'}, 
     {display: "Investment Banker", value: 'Investment Banker'}, 
     {display: "Media", value: 'Media'}, 
     {display: "Others", value: 'Others'} 
    ] 
} 

のデータセットは、この中で私を助けて。

+0

'key'が目的です。実際のキーとして 'key'内の一意のプロパティを使います。オブジェクトに固有の識別子がありますか? –

+0

@EricGuanいいえ、識別子を持たないハードコードデータをインポートしています。私は質問を更新しました。 –

+0

あなたは文字列としてキーを補間しようとしましたか? – Maru

答えて

0

タグのJSON形式を変更してみてください。あなたが更新された形式

[{ 
    Investor: [ 
     {display: "Mutual Fund", value: 'Mutual Fund'}, 
     {display: "Insurance", value: 'Insurance'}, 
     {display: "FII", value: 'FII'}, 
     {display: "PMS", value: 'PMS'}, 
     {display: "Proprietary", value: 'Proprietary'}, 
     {display: "HNI", value: 'HNI'}, 
     {display: "Private Equity", value: 'Private Equity'}, 
     {display: "Others", value: 'Others'} 
    ] 
    }, 
    { 
    Research: [ 
     {display: "Global", value: 'Global'}, 
     {display: "Domestic", value: 'Domestic'}, 
     {display: "Retail", value: 'Retail'}, 
     {display: "Others", value: 'Others'} 
    ] 
    }, 
    { 
    Corporate: [ 
     {display: "Corporate", value: 'Corporate'} 
    ] 
    }, 
    { 
     Others: [ 
     {display: "Debt", value: 'Debt'}, 
     {display: "Debt Adviser", value: 'Debt Adviser'}, 
     {display: "Investment Banker", value: 'Investment Banker'}, 
     {display: "Media", value: 'Media'}, 
     {display: "Others", value: 'Others'} 
    ] 
    } 
    ] 

の下にあなたのJSON形式を変更した場合
警告メッセージが表示されなくなります:私はほとんどで使用され、より友好JSONフォーマットにあなたのJSON形式を更新した

ユースケース。
このアプローチを試してみて、それがあれば、あなたは、配列

内のオブジェクトを入れ子にしたオブジェクトtags

テンプレート

<div v-for="(obj,index) in tags" :key="index"> 
       {{index}} {{obj.topic}} 
     <div style="padding-left: 20px;" v-for="(category,index1) in obj.category" :key="index1"> 
       {{index1}} == {{category.display}} || {{category.value}} 
       </div> 
      </div> 

スクリプト

export default { 
     data() { 
     return { 
      tags : 
      [ 
       { 
       topic : "Investor", 
       category : [ 
       {display: "Mutual Fund", value: 'Mutual Fund'}, 
       {display: "Insurance", value: 'Insurance'}, 
       {display: "FII", value: 'FII'}, 
       {display: "PMS", value: 'PMS'}, 
       {display: "Proprietary", value: 'Proprietary'}, 
       {display: "HNI", value: 'HNI'}, 
       {display: "Private Equity", value: 'Private Equity'}, 
       {display: "Others", value: 'Others'} 
       ] 
       }, 
       { 
       topic : "Research", 
       category : [ 
        {display: "Global", value: 'Global'}, 
        {display: "Domestic", value: 'Domestic'}, 
        {display: "Retail", value: 'Retail'}, 
        {display: "Others", value: 'Others'} 
       ] 
       }, 
       { 
       topic : "Corporate" , 
       category : [ 
       {display: "Corporate", value: 'Corporate'} 
       ] 
       }, 
       { 
       topic : "Others", 
       category : [ 
        {display: "Debt", value: 'Debt'}, 
        {display: "Debt Adviser", value: 'Debt Adviser'}, 
        {display: "Investment Banker", value: 'Investment Banker'}, 
        {display: "Media", value: 'Media'}, 
        {display: "Others", value: 'Others'} 
       ] 
       } 
      ] 
     } 
     } 
    } 
+0

これは私を助けてくれません、私は配列にすることはできません私の全体の構造は、それは鍵をとり、子要素を見つけることです。あなたはコードを見ることができます。私が問題に言及しているコードのすぐ隣にあります。 –

+0

あなたの目的は、機能にキーを渡すことです。しかし、その鍵はビジネスロジックに関連するものでなければならないのですか? – divine

+0

現在、私はnullになっています/あなたのフォーマットに従ってデータが表示されていません。以上、私はこのタグの値をとり、子要素を表示するforループを持っています。タグの中で 'v-for ="タグを探してください。[currentTag] "' –

-1

を動作するかどうか私に知らせてあなたはすべてを渡したいと思っていますtags

let tags = { 
 
    Investor: [ 
 
     {display: "Mutual Fund", value: 'Mutual Fund'}, 
 
     {display: "Insurance", value: 'Insurance'}, 
 
     {display: "FII", value: 'FII'}, 
 
     {display: "PMS", value: 'PMS'}, 
 
     {display: "Proprietary", value: 'Proprietary'}, 
 
     {display: "HNI", value: 'HNI'}, 
 
     {display: "Private Equity", value: 'Private Equity'}, 
 
     {display: "Others", value: 'Others'} 
 
    ], 
 
    Research: [ 
 
     {display: "Global", value: 'Global'}, 
 
     {display: "Domestic", value: 'Domestic'}, 
 
     {display: "Retail", value: 'Retail'}, 
 
     {display: "Others", value: 'Others'} 
 
    ], 
 
    Corporate: [ 
 
     {display: "Corporate", value: 'Corporate'} 
 
    ], 
 
    Others: [ 
 
     {display: "Debt", value: 'Debt'}, 
 
     {display: "Debt Adviser", value: 'Debt Adviser'}, 
 
     {display: "Investment Banker", value: 'Investment Banker'}, 
 
     {display: "Media", value: 'Media'}, 
 
     {display: "Others", value: 'Others'} 
 
    ] 
 
} 
 

 
new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    tags 
 
    } 
 
})
<script src="https://cdn.jsdelivr.net/npm/vue"></script> 
 
<div id="app"> 
 
    <div class="col-sm-4 border-right"> 
 
    <div v-for="(tag, key) in tags">{{key}} 
 
     <button @click.prevent="" 
 
       v-for="key in tag" 
 
       :key="key"> 
 
      {{key.value}} 
 
     </button> 
 
    </div> 
 
    </div> 
 
</div>

+0

なぜ2つのforループを使用していますか? –

+0

あなたは構造体**オブジェクト**を持っています。 **オブジェクト**は**配列**を持っています。 **配列**は別の**オブジェクト**を持っています。 https://vuejs.org/v2/guide/list.html の命令リストレンダリングを参照してください。あなたはオブジェクト 'tags'を複製する構造体HTMLを持っています –

関連する問題