ধরা যাক আমার কাছে একটি প্রধান ভ্যু উদাহরণ রয়েছে যার সন্তানের উপাদান রয়েছে। ভ্যু উদাহরণের বাইরে থেকে এই উপাদানগুলির একটির সাথে সম্পর্কিত কোনও পদ্ধতিকে কল করার কোনও উপায় কি আছে?
এখানে একটি উদাহরণ:
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();
তবে এটি ভাল সমাধান নয় কারণ আমি বাচ্চাদের অ্যারেতে এর সূচক দ্বারা উপাদানটি উল্লেখ করছি এবং অনেকগুলি উপাদান সহ এটি স্থির থাকার সম্ভাবনা নেই এবং কোডটি কম পাঠযোগ্য।