2017-01-24 10 views
0

私は自分のコンポーネントの1つに情報を渡すのに苦労しています。VueJS 2コンポーネントは、式を使用するときに矛盾を生じます。

私は、データのリストを繰り返し処理し、リストの最後の項目についてブール値をtrueに設定しようとしています。私は面白い不一致に遭遇しています。v-bind:isLast="index + 1 == tiers.length"を次のコードで使用するとfalseに評価されますが、v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}"を実行してブール値を期待するのではなくその情報を格納するオブジェクトを使用すると、ブールキーはオブジェクト。

これはなぜですか?また、これは計算されたプロパティとしてより良いでしょうか?私は本当に層のリストからコンポーネントにもっと多くの情報を渡したいとは思っていません。私は、そのコンポーネントが層のリストに全く気づかないように感じるべきです。

<section id="classification-metadata-editor"> 
    <metadata-button-row 
    v-for="(row,index) in tiers" 
    v-bind:row="row" 
    v-bind:index="index" 
    v-bind:isLast="index + 1 == tiers.length" 
    v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}"> 
    </metadata-button-row> 
</section> 

isLast: false 
test: {index: 0, tiersLength: 1, bool: true} 

私は小道具を設定すると意図したかもしれないものよりも少しをしていますが、私はそれを行うにはどのように他はかなりわからないと感じて、これが意図されている場合はかなりよく分かりません。私は似たような質問をしてきましたが、検索のための適切な用語がわからないので、これが他のところでカバーされていれば謝ります。

ありがとうございました!

+0

これは何時間もの楽しいトラブルシューティングを経た後、isLastという変数が呼び出されたようです問題提起その変数呼び出しをバインドとコンポーネントの両方のテストに変更すると、ブール値は期待通りに評価され始めました。面白い。 大文字が私のコードを捨てているようです。理由は分かりません。同じコードだが、変数名をisLast、lastInArray、arrayLastに置き換えると、すべてfalseに戻りますが、is_last、last_in_arrayという名前のテストはすべてtrueに評価されます。 –

答えて

0

あなたはこのように支えるために、オブジェクトを割り当てることはできません。

v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}"> 

あなたは次のようにこのオブジェクトを取得するために計算されたプロパティやメソッドを作成する必要があります。

methods: { 
    getObject (index) { 
    return {index: index, tiersLength: this.tiers.length, bool: index + 1 == this.tiers.length} 
    } 
} 

とで、このメソッドを使用しますテンプレート:

v-bind:test="getObject(index)" 
+0

提案を反映するようにコードを更新しましたが、それでも私が期待しているところではfalseを返しているようです。 'V-バインド:にisLast = "にisLast(インデックス)"' 親に追加: '方法:{にisLast:関数(指数){ 戻りブール(インデックス+ 1ここ が更新され=== this.tiers.length) } ' 私もブール値なしでそれを試しました..まだ偽です。 私はまた、そのようなオブジェクトをバインドすることができないということをあなたが意味しているかどうかはよく分かりません。私は上記のコードでそれを達成しました。多分その練習はお勧めできませんか?または非反応的なので、私たちはそれを使用しませんか?さらに詳しい説明は歓迎されるでしょう –

+0

私のコードで何が起こっているのか分かりました。 @Saurabhの方が良いコードを整理する助けと提案をいただき、ありがとうございます。あなたの回答を与えられた追加情報の答えとしてマークしてください。 :) –

関連する問題