2017-09-30 4 views
0

誰かがこの奇妙な問題を手伝ってくれますか?Vue v-modelは親データを変更しますが、カスタムコンポーネントの値propを変更しません

私は、次のVUEのコンポーネントを持っている:私はChangeボタンでクリックしたときに成功とmyDataField変更、私はv-modelを使用したいが、私は<z-temp v-model="myDataField">を使用する場合

<template lang="pug"> 
div 
    p.alert.alert-info {{value}} 
    button(@click="onChange") Change 
</template> 

<script> 
    import Vue from 'vue'; 
    export default { 
    name: 'z-temp', 
    props: { 
     value: { 
     required: true 
     } 
    }, 
    watch: { 
     value(val) { 
     console.log(val); 
     } 
    }, 
    methods: { 
     onChange() { 
     this.$emit('input', Random.id()); 
     } 
    } 
    }; 
</script> 

が、私は逆を作るときとmyDataFieldに値を入力します。myDataField: "foo"のように、fooとしてthis.valueundefinedとします。

誰でも教えてください。

+0

z-tempコンポーネントを使用する場所でコードを共有した方が簡単にご案内できます。あなたの質問には、壊れたバージョンを追加してください! – pate

答えて

0

私は、myDataFieldが反応しないので、問題は親にあると推測しています。

0

問題を明確にすることができますか、それはすべきである、すなわち動作しているようです。コンポーネントは問題ではないようです。

zTemp = Vue.component('ztemp', { 
 
\t template: '#ztemp', 
 
    props: { 
 
    value: { 
 
     required: true 
 
    } 
 
    }, 
 
    watch: { 
 
    value(val) { 
 
     console.log(val); 
 
    } 
 
    }, 
 
    methods: { 
 
    onChange() { 
 
     this.$emit('input', Math.random()); 
 
    } 
 
    } 
 
}); 
 

 
new Vue({ 
 
    el: '#app', 
 
    components: { 
 
    \t zTemp 
 
    }, 
 
    data: { 
 
    \t myinput: '0.2' 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.4/vue.min.js"></script> 
 

 
<div id="app"> 
 
    {{myinput}}<br/> 
 
    <input v-model="myinput"/><br/> 
 
    <ztemp v-model="myinput"/><br/> 
 
</div> 
 

 
<script type="text/x-template" id="ztemp"> 
 
    <div> 
 
    <p>{{value}}</p> 
 
    <button @click="onChange">Change</button> 
 
    </div> 
 
</script>

0

支援するためのおかげで、私はvue-meteormeteorを使用していますが、問題はvue-meteorに関連していました。

.clientフォルダ内の別のVueプロジェクトを使用するようにプロジェクト構造を変更し、問題が解消しました。それはコンポーネントの問題ではなく、vue-meteorパッケージであった。とにかく、ありがとう。

関連する問題