मान लीजिए कि मेरे पास एक मुख्य Vue उदाहरण है जिसमें बाल घटक हैं। क्या पूरी तरह से Vue उदाहरण के बाहर से इन घटकों में से एक को कॉल करने का एक तरीका है?
यहाँ एक उदाहरण है:
var vm = new Vue({
el: '#app',
components: {
'my-component': {
template: '#my-template',
data: function() {
return {
count: 1,
};
},
methods: {
increaseCount: function() {
this.count++;
}
}
},
}
});
$('#external-button').click(function()
{
vm['my-component'].increaseCount(); // This doesn't work
});
<script src="http://vuejs.org/js/vue.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="app">
<my-component></my-component>
<br>
<button id="external-button">External Button</button>
</div>
<template id="my-template">
<div style="border: 1px solid; padding: 5px;">
<p>A counter: {{ count }}</p>
<button @click="increaseCount">Internal Button</button>
</div>
</template>
इसलिए जब मैं आंतरिक बटन पर क्लिक करता हूं, तो increaseCount()
विधि इसके क्लिक इवेंट के लिए बाध्य होती है इसलिए इसे कॉल किया जाता है। ईवेंट को बाहरी बटन से बांधने का कोई तरीका नहीं है, जिसकी क्लिक ईवेंट मैं jQuery के साथ सुन रहा हूं, इसलिए मुझे कॉल करने के लिए किसी अन्य तरीके की आवश्यकता होगी increaseCount
।
संपादित करें
ऐसा लगता है कि यह काम करता है:
vm.$children[0].increaseCount();
हालांकि, यह एक अच्छा समाधान नहीं है क्योंकि मैं बच्चों के सरणी में इसके सूचकांक द्वारा घटक का संदर्भ दे रहा हूं, और कई घटकों के साथ यह स्थिर रहने की संभावना नहीं है और कोड कम पठनीय है।