私のVueデータの配列から構築された約10個のselect
要素のフォームがあります。VueJS 2.0 v-modelの動的ターゲットv-for
セレクターの配列が最初にして、空であるAJAX呼び出しは、配列を移入し、VueがHTMLを作成します - 私は私が望むちょうど私がv-model
で抱えている問題を示すために簡略化され、以下のスニペットを守ってきました選択したすべての値を持つオブジェクトを作成するため、以下の例に従ってv-model="selected[ selector.name ]"
を使用しようとしています。私は例のように、空白のままにすると、{}
selected: { make: 'audi', fuel: 'petrol' }
: 私は簡単に今これは私がこのようなselected
プロパティを初期化場合に動作selected.make
またはselected.fuel
を求めることができるようにしたいです、更新されません。 selected
のすべてのプロパティを手動でハードコーディングする必要はなく、AJAX経由で送信されるサーバーサイドコードに1度だけリストしたいだけです。
別の方法で?
フィールド名と一致するドロップダウンを見つけて値を返す方法はありますか?ちょうどそれは非常にVueもののようには見えません。あなたはthis.$set
試みでオブジェクトに新しいキーを設定していないbecuase
var app = new Vue({
\t el: '#example',
\t data: {
\t \t selectors: [
\t \t \t {
\t \t \t \t name: 'make',
\t \t \t \t options: ['audi','bmw']
\t \t \t },
\t \t \t {
\t \t \t \t name: 'fuel',
\t \t \t \t options: ['petrol','diesel']
\t \t \t }
\t \t ],
\t \t selected: {}
\t }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.3/vue.js"></script>
<div id="example">
<template v-for="selector in selectors">
<select v-model="selected[ selector.name ]">
<option v-for="option in selector.options">{{option}}</option>
</select>
</template>
<p>
{{selected.make}}
<br />
{{selected.fuel}}
</p>
</div>
ああ、私は配列のみに適用されていると考え、私はそれを試してみるだろう。ドキュメントへのリンクは、このような答えで素晴らしいでしょう –
実際には配列よりオブジェクトに多くを適用します。配列には突然変異のメソッドなどがあり、変更を加えて配列を反応させ続けることができます。しかし、Vueはオブジェクト上の追加のキーを検出せず、それらを反応させません。 – GuyC
ええ、これを 'v-model'として使うことはできません。マークアップ以外の関数で行う必要があります。 –