In the end I opted for using Vue's ref
directive. This allows a component to be referenced from the parent for direct access.
E.g.
Have a compenent registered on my parent instance:
var vm = new Vue({ el: '#app', components: { 'my-component': myComponent } });
Render the component in template/html with a reference:
<my-component ref="foo"></my-component>
Now, elsewhere I can access the component externally
<script> vm.$refs.foo.doSomething(); //assuming my component has a doSomething() method </script>
See this fiddle for an example: https://jsfiddle.net/xmqgnbu3/1/
(old example using Vue 1: https://jsfiddle.net/6v7y6msr/)