Diyelim ki alt bileşenleri olan bir ana Vue örneğim var. Bu bileşenlerden birine ait bir yöntemi Vue örneğinin dışından tamamen çağırmanın bir yolu var mı?
İşte bir örnek:
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>
Dahili düğmeyi tıkladığımda, increaseCount()
yöntem click olayına bağlanır, böylece çağrılır. Olayı, jQuery ile dinlediğim tıklama olayını harici düğmeye bağlamak için bir yol yoktur, bu yüzden aramak için başka bir yola ihtiyacım olacak increaseCount
.
DÜZENLE
Bu işe yarıyor gibi görünüyor:
vm.$children[0].increaseCount();
Ancak, bu iyi bir çözüm değil çünkü ben çocuk dizindeki dizinine göre bileşen başvurmak ve birçok bileşen ile bu sabit kalmak olası değildir ve kod daha az okunabilir.