如何在使用可重用组件时更改textarea的值?

问题描述:

当需要满足将文本输入到不同的组件textarea时,我需要更改特定组件textarea内的文本。我试图创建一个简单的例子来展示这个问题。我的主要问题是针对正确的组件并编辑其动态显示的文本。如何在使用可重用组件时更改textarea的值?

父组件

<template> 
    <reuseableComponent 
     input-type="textarea" v-model="Example1"> 
    </reuseableComponent> 
    <reuseableComponent 
     input-type="textarea" v-model="Example2"> 
    </reuseableComponent> 
<template> 

可重复使用的组件

<textarea 
    v-model='taValue' @input='$emit("input", taValue)'> 
</textarea> 

exampleMethod() { 
    if(value) { 
     //change text in Example2 textarea instance. 
    } 
} 
+0

你将需要采取进一步研究vuejs结合等以及它们的活动。同时为组件添加更多的代码,因为它在实际的vuejs代码中有点欠缺。所以它无助于弄清楚你做了什么以及需要什么。 –

如果我这样做是正确,你想,如果第一组件的值相匹配的特定标准,以改变第二组件的价值。所以,如果是这样的话,我已经产生了一个工作小提琴,你可能会发现它here,它通过在第一个可重用的textarea中输入Foo您将获得酒吧在第二textarea。

window.Event = new Vue(); 
 

 
Vue.component('my-textarea', { 
 
\t template: ` 
 
    \t <textarea :value="value" 
 
    \t \t @input="updateValue($event.target.value)" 
 
       :placeholder="placeholder" 
 
    \t \t ref="input" 
 
    > 
 
    </textarea>`, 
 
    props: { 
 
    \t value: { default: '' }, 
 
     placeholder: { default: '' } 
 
    }, 
 
    methods: { 
 
    \t updateValue(value) { 
 
     // adding v-model support to this reusable component 
 
     this.$refs.input.value = value; 
 
     this.$emit('input', value); 
 
      
 
     // Firing an event via Event bus to notify sibling reusable component 
 
     Event.$emit('valueChanged', this._uid, value); 
 
    } 
 
    }, 
 
    
 
    mounted() { 
 
     // Listening for 'valueChanged' event 
 
    \t Event.$on('valueChanged', (id, value) => { 
 
    \t if (id != this._uid) { 
 
     \t  if (value === 'Foo') { 
 
     \t this.$refs.input.value = 'Bar'; 
 
     } 
 
     } 
 
    }); 
 
    } 
 
    
 
}); 
 

 
new Vue({ 
 
    el: '#app', 
 
    data() { 
 
     return { 
 
    \t text1: '', 
 
     text2: '' 
 
    } 
 
    } 
 

 
});
<div id="app"> 
 
    <my-textarea v-model="text1" placeholder="Type Foo here"></my-textarea> 
 
    <my-textarea v-model="text2"></my-textarea> 
 
</div>

https://jsfiddle.net/mrzerehpoosh/Lnkrjqy6/

+0

这看起来像我正在寻找的功能,但我有数据绑定到Vuex状态,我会看看如果我可以得到这个工作与我的设置。谢谢! – Pyreal