আপনার নিয়ন্ত্রণ রেন্ডার দ্বারা প্রভাবিত হলে রেফ এবং ইভেন্ট বাস দুটিরই সমস্যা রয়েছে v-if। সুতরাং, আমি একটি সহজ পদ্ধতি নিয়ে যাওয়ার সিদ্ধান্ত নিয়েছি।
ধারণাটি এমন একটি পদ্ধতি পাঠানোর জন্য একটি অ্যারেটিকে একটি সারি হিসাবে ব্যবহার করছে যা সন্তানের উপাদানগুলিতে কল করা প্রয়োজন। উপাদানটি মাউন্ট হয়ে গেলে এটি এই সারিটি প্রক্রিয়া করবে। এটি নতুন পদ্ধতিগুলি কার্যকর করার জন্য সারিতে নজর রাখে।
(ডেসমন্ড লুয়ার উত্তর থেকে কিছু কোড নেওয়া)
মূল উপাদান কোড:
import ChildComponent from './components/ChildComponent'
new Vue({
el: '#app',
data: {
item: {},
childMethodsQueue: [],
},
template: `
<div>
<ChildComponent :item="item" :methods-queue="childMethodsQueue" />
<button type="submit" @click.prevent="submit">Post</button>
</div>
`,
methods: {
submit() {
this.childMethodsQueue.push({name: ChildComponent.methods.save.name, params: {}})
}
},
components: { ChildComponent },
})
এটি চাইল্ড কম্পোনেন্টের জন্য কোড
<template>
...
</template>
<script>
export default {
name: 'ChildComponent',
props: {
methodsQueue: { type: Array },
},
watch: {
methodsQueue: function () {
this.processMethodsQueue()
},
},
mounted() {
this.processMethodsQueue()
},
methods: {
save() {
console.log("Child saved...")
},
processMethodsQueue() {
if (!this.methodsQueue) return
let len = this.methodsQueue.length
for (let i = 0; i < len; i++) {
let method = this.methodsQueue.shift()
this[method.name](method.params)
}
},
},
}
</script>
এবং উন্নতির জন্য অনেকগুলি জায়গা রয়েছে যেমন processMethodsQueueএকটি মিশ্রণে চলে যাওয়া ...