2017-10-17 10 views
0

私は現在、下記のをやってる:オブジェクト内のネストされたプロパティを持つ2ウェイ・バインディング。 (VueJS + VueX)

<script> 
export default { 
    computed: { 
    editingItem: { 
     get() { 
     return this.$store.getters['editing/editingItem']; 
     }, 
     set(newValue) { 
     this.$store.commit('editing/UPDATE_EDITING', newValue); 
     } 
    }, 
    editingItemName: { 
     get() { 
     return this.editingItem.name; 
     }, 
     set(newValue) { 
     this.editingItem.name = newValue; 
     this.editingItem = this.editingItem; 
     } 
    } 
    }, 
} 
</script> 

は、私はそれを複雑に上ですか? editingItemName set()の2行目は、editingItem set()関数をトリガーする回避策です。

+0

form.vue

const myModule = { state: { customerInfo: { name: '', telephone: '' } }, getters: { getTelephone(state) { return state.customerInfo.telephone } }, mutations: { setTelephone(state, payload) { state.customerInfo.telephone += payload }, } } export default myModule; 

を説明することができますか?ストアとの双方向データバインディングを実現しようとしていますか? – LiranC

+0

@LiranCはい。私は単純な状態値でそれを行うことができますが、もしそれがネストされたパラメータを持っていれば、私はやったか、ストアのすべてのパラメータに対してコミットする必要があります。私がこの例を好きにした理由は、このように私は1つの突然変異しか持たないということです。 –

答えて

1

Check this article。それはフォームに関するものですが、それはvuexとの双方向バインディングを実現する方法を示しています。

あなたの特別な場合については、コードを参照してください。 telephoneは、オブジェクト内のネストされたプロパティです。あなたはacheiveしようとしているものを

myModule.js

<template> 
    <div> 
    <input v-model="telephone"></input> 
    </div> 
</template> 

<script> 
export default { 
    computed: { 
    telephone: { 
     get() { 
     return this.$store.getters['getTelephone'] 
     }, 
     set(value) { 
     this.$store.commit('setTelephone', value) 
     } 
    }, 
    } 
} 
</script> 
+0

クール。それは私がやっていたもののように見えます - それに、私はすべての入れ子になったパラメータに同じ突然変異を再利用しています。私はすべてのパラメーターに1つの突然変異を持たせるべきだと思いますか、私がやっていることは大丈夫ですか?あなたの答えは、私が今のところそれを行う方法だと思うほど正しいとマークします! –

関連する問題