Vue component parent from child recursive include











up vote
0
down vote

favorite












So I want to have many components nested to each other and included dynamically.



Lets assume simple case:



-container
-row
-container
-row
-widget



etc.



So how can I include container that will load row which will load previous component container in an elegant way (recursive I guess)



I want this functionality for more components than just container and row










share|improve this question






















  • I want to bubble down with data as I am including tree based json.
    – Trouble
    Nov 7 at 16:57










  • this could be useful alligator.io/vuejs/recursive-components
    – eldo
    Nov 7 at 21:20















up vote
0
down vote

favorite












So I want to have many components nested to each other and included dynamically.



Lets assume simple case:



-container
-row
-container
-row
-widget



etc.



So how can I include container that will load row which will load previous component container in an elegant way (recursive I guess)



I want this functionality for more components than just container and row










share|improve this question






















  • I want to bubble down with data as I am including tree based json.
    – Trouble
    Nov 7 at 16:57










  • this could be useful alligator.io/vuejs/recursive-components
    – eldo
    Nov 7 at 21:20













up vote
0
down vote

favorite









up vote
0
down vote

favorite











So I want to have many components nested to each other and included dynamically.



Lets assume simple case:



-container
-row
-container
-row
-widget



etc.



So how can I include container that will load row which will load previous component container in an elegant way (recursive I guess)



I want this functionality for more components than just container and row










share|improve this question













So I want to have many components nested to each other and included dynamically.



Lets assume simple case:



-container
-row
-container
-row
-widget



etc.



So how can I include container that will load row which will load previous component container in an elegant way (recursive I guess)



I want this functionality for more components than just container and row







javascript vuejs2 components






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 7 at 16:07









Trouble

15115




15115












  • I want to bubble down with data as I am including tree based json.
    – Trouble
    Nov 7 at 16:57










  • this could be useful alligator.io/vuejs/recursive-components
    – eldo
    Nov 7 at 21:20


















  • I want to bubble down with data as I am including tree based json.
    – Trouble
    Nov 7 at 16:57










  • this could be useful alligator.io/vuejs/recursive-components
    – eldo
    Nov 7 at 21:20
















I want to bubble down with data as I am including tree based json.
– Trouble
Nov 7 at 16:57




I want to bubble down with data as I am including tree based json.
– Trouble
Nov 7 at 16:57












this could be useful alligator.io/vuejs/recursive-components
– eldo
Nov 7 at 21:20




this could be useful alligator.io/vuejs/recursive-components
– eldo
Nov 7 at 21:20












1 Answer
1






active

oldest

votes

















up vote
0
down vote













So to achieve my goal I have to build ComponentLoader and child components loaded from it.



ComponentLoader.vue
<template
v-for="(block, index) in data.children">
<component
v-if="component"
:is="component"
:key="`container-${block.id}-${index}`"
:data="block"/>
</template>
</template>


Which for instance will load Article component from its children:



ArticleComponent.vue
<template>
<SimpleArticle
:data="data"/>
<ComponentLoader
v-if="data.children"
:data="data"/>
</template>


So ArticleComponent will call ComponentLoader again if it has more children to load. This way works for me and is recursively going through the data tree.






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














     

    draft saved


    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53193340%2fvue-component-parent-from-child-recursive-include%23new-answer', 'question_page');
    }
    );

    Post as a guest
































    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    So to achieve my goal I have to build ComponentLoader and child components loaded from it.



    ComponentLoader.vue
    <template
    v-for="(block, index) in data.children">
    <component
    v-if="component"
    :is="component"
    :key="`container-${block.id}-${index}`"
    :data="block"/>
    </template>
    </template>


    Which for instance will load Article component from its children:



    ArticleComponent.vue
    <template>
    <SimpleArticle
    :data="data"/>
    <ComponentLoader
    v-if="data.children"
    :data="data"/>
    </template>


    So ArticleComponent will call ComponentLoader again if it has more children to load. This way works for me and is recursively going through the data tree.






    share|improve this answer

























      up vote
      0
      down vote













      So to achieve my goal I have to build ComponentLoader and child components loaded from it.



      ComponentLoader.vue
      <template
      v-for="(block, index) in data.children">
      <component
      v-if="component"
      :is="component"
      :key="`container-${block.id}-${index}`"
      :data="block"/>
      </template>
      </template>


      Which for instance will load Article component from its children:



      ArticleComponent.vue
      <template>
      <SimpleArticle
      :data="data"/>
      <ComponentLoader
      v-if="data.children"
      :data="data"/>
      </template>


      So ArticleComponent will call ComponentLoader again if it has more children to load. This way works for me and is recursively going through the data tree.






      share|improve this answer























        up vote
        0
        down vote










        up vote
        0
        down vote









        So to achieve my goal I have to build ComponentLoader and child components loaded from it.



        ComponentLoader.vue
        <template
        v-for="(block, index) in data.children">
        <component
        v-if="component"
        :is="component"
        :key="`container-${block.id}-${index}`"
        :data="block"/>
        </template>
        </template>


        Which for instance will load Article component from its children:



        ArticleComponent.vue
        <template>
        <SimpleArticle
        :data="data"/>
        <ComponentLoader
        v-if="data.children"
        :data="data"/>
        </template>


        So ArticleComponent will call ComponentLoader again if it has more children to load. This way works for me and is recursively going through the data tree.






        share|improve this answer












        So to achieve my goal I have to build ComponentLoader and child components loaded from it.



        ComponentLoader.vue
        <template
        v-for="(block, index) in data.children">
        <component
        v-if="component"
        :is="component"
        :key="`container-${block.id}-${index}`"
        :data="block"/>
        </template>
        </template>


        Which for instance will load Article component from its children:



        ArticleComponent.vue
        <template>
        <SimpleArticle
        :data="data"/>
        <ComponentLoader
        v-if="data.children"
        :data="data"/>
        </template>


        So ArticleComponent will call ComponentLoader again if it has more children to load. This way works for me and is recursively going through the data tree.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 10 at 16:21









        Trouble

        15115




        15115






























             

            draft saved


            draft discarded



















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53193340%2fvue-component-parent-from-child-recursive-include%23new-answer', 'question_page');
            }
            );

            Post as a guest




















































































            Popular posts from this blog

            Bressuire

            Vorschmack

            Quarantine