2017-04-05 17 views
0

非常に複雑なWebアプリケーションがあり、現在VueJSに変換しようとしていますが、インデックス付き配列でv-forループを作成しようとすると問題が発生したようです。私はVueJSの限界に実際にぶつかったのですか?インデックス付き配列のv-for

は、ここに私のHTMLループのためのコンテキストです:

 <div v-for="(thisView,vIndex) in viewSettings"> 
      <div v-for="(theTemplate,tIndex) in iTemplates" v-bind:id="'tmpt-vf-tab-'+thisView.incID+'-'+tIndex"> 
       <span class="attribute-controls" v-for="thisAtt in thisView.c.cAtts[tIndex]"> 
        <input type='checkbox' v-model='thisAtt.useAtt'/> {{ thisAtt.attID }} 
       </span> 

VueJSはレンダリング機能に問題があることを私に伝えます:「未定義のは( 『thisView.c.cAtts [tIndex]』を評価対象ではありません) "

どのような考えですか?

+2

あなたはデータを表示しますか? – Bert

+0

あまりにも多くの - それは、大規模な複雑なWebアプリケーションです。しかし、私はそれを見てきました(コンソール上の出力とJSONLINTに入れました)。そしてそれはRactiveで働いています。 – user3780094

+0

'thisView.c.cAtts'はアイテムごとに存在しますか?オブジェクトが存在するかどうかをチェックすることができるメソッドからこれを返すことが考えられます。 –

答えて

1

これは、v-forネストが期待通りに機能することを示すプログラムの例です。データ構造が正確にここで動作するかどうかを確認することができます。

new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    viewSettings: [{ 
 
     c: { 
 
     cAtts: [ 
 
      [{ 
 
      useAtt: false, 
 
      attID: 'only' 
 
      }], 
 
      [{ 
 
       useAtt: true, 
 
       attID: 'first' 
 
      }, 
 
      { 
 
       useAtt: false, 
 
       attID: 'second' 
 
      } 
 
      ] 
 
     ] 
 
     } 
 
    }], 
 
    iTemplates: [2, 3] 
 
    } 
 
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.2.6/vue.min.js"></script> 
 
<div id="app"> 
 
    <div v-for="(thisView, vIndex) in viewSettings"> 
 
    <div v-for="(theTemplate, tIndex) in iTemplates"> 
 
     <div class="attribute-controls" v-for="thisAtt in thisView.c.cAtts[tIndex]"> 
 
     <label>{{thisAtt.attID}} <input type='checkbox' v-model='thisAtt.useAtt' /></label> {{thisAtt.useAtt}} 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

これは原則として動作するはずであることを確認してくれてありがとう。私はちょうど同じようなことをしようとしていた... – user3780094

+1

私は問題を発見しました:v-if指令のtypo!ご協力いただきありがとうございます! – user3780094

関連する問題