9

Javascript code:

    var main = new Vue({ 
        el: "#main", 
        data: { 
            currentView: "top", 
        }, 
    }); 

   var topComponent = Vue.component('top', Vue.extend({ 
    template: "#top", 
   })); 

Now when I access main.currentView, I get "top". But with this string 'top', how do i get the component topComponent?

1

3 Answers 3

13

From the VueJS guide

Despite the existence of props and events, sometimes you might still need to directly access a child component in JavaScript. To achieve this you have to assign a reference ID to the child component using ref. For example:

var parent = new Vue({ el: '#parent' })
// access child component instance
var child = parent.$refs.profile
<div id="parent">
     <user-profile ref="profile"></user-profile>
</div>

Sign up to request clarification or add additional context in comments.

2 Comments

What about accessing child of third-party component?
is isn't global
8

It's easy. You can access the topComponent just using Vue.component.

var topComponent = Vue.component('top');

Now you have topComponent, you can do a lot of things with its methods.

cid
options
super
extend
directive
filter
partial
transition
component

Comments

1

You may want to check out this example:

http://jsbin.com/wikeb/1/edit

It uses the v-view directive in the html, which takes a string to change the viewmodel displayed. Some sweet transitions going on as well.

Comes from: https://github.com/yyx990803/vue/blob/master/test/functional/fixtures/routing.html

1 Comment

this exemple works for the old legacy version of vue. I corrected it and here is the update jsbin.com/jizegefape/2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.