2017-02-04 7 views
0

状態オブジェクトを小道具として渡しましたが、プロパティ変更時にオブジェクト全体を上書きするためにミューテータに渡すように配列を変更することはできますが、プロパティではできませんリテラル。Vuexオブジェクトフォーム:子コンポーネントへのイベント委譲

ドキュメントでは、配列/オブジェクトを変更できるはずですが、object.prop = "string"は変更できないことを警告しています。また、なぜ私は実際に不変であることを意味する状態オブジェクトの配列を変更できるのか理解できません。リテラルである小道具を変更するには回避策がありますが、元の小道具と同期がとれていません。状態オブジェクトのプロパティを変更するためのフォームを作成するための効率的なソリューションをもう一つ見つけてうれしいです。

<div id="skillListing" class="ui item" @change="resetSkill"> 
    <input :value="filter.name" placeholder="edit me"> 

    props: [ 
    "filter", 
    "fIndex", 
    "gIndex" 
    ], 
    methods: { 
    resetSkill() { 
     console.log(this.filter.name) //won't change 
     this.$store.commit('upsert_skill', {o: this.filter, f: this.fIndex, g: this.gIndex}) 
    } 
    } 
+0

なぜこのコードを取得したのかという理由は、偶数ハンドラがターゲットキーを指定していないということです。チェックボックス/入力 – zhan

+0

私は、プロップに応じて動的に適切な入力タイプをレンダリングするアイテムのキーを持つレンダリングコンポーネントは機能すると思いますが、それでも役立たないでしょうリテラルの多くの点で – zhan

+0

実際に動的なフォームコンポーネントです。これは、event.target.id + event.target.valueがキー値のペアを取得するため、IDがkeyのobjのキーとしてレンダリングされます。 – zhan

答えて

0

コンポーネントのみを入力フィールドの場合、私は、あなたの質問から理解して何から、あなたは小道具を渡すためにv-modelを使用することができます。

v-modelは、基本的にユーザー入力イベントに関するデータを更新するためのシンタックスシュガーです。

<input v-model="something"> 

ためだけ糖衣構文である:子コンポーネントでは、とfilter.name変数を変更します入力フィールド呼び出し、次の変化にvalue:あなたはpropを渡すことができ

<input v-bind:value="something" v-on:input="something = $event.target.value"> 

this.$emit('input', newVal) 

これは、あなたのコンポーネントを使用する方法である。

<your-component v-model="filter.name"></your-component> 

あなたがこのアプローチhereを使用して1つの実装を見てすることができます。

+0

タイトルはVuexオブジェクトフォームを読みます。そのため、イベントハンドラにプロパティの「束」をコミットしようとしていて、オブジェクトをバッチで上書きしようとしています。 V-modelは、私が好きではないと言った回避策は、元のプロップを無視するためです。 – zhan

+0

@zhanまた、 'this。$ emit'の代わりに' this。$ dispatch'を使用すると、vuexストアが変更されます。 – Saurabh

+0

偶数のハンドラから元のオブジェクトキーを読み取る方法を知っていますか? @Saurabh私は小道具のキーを変更することができましたか? – zhan

関連する問題