define vue application in blade component

2019-09-21 16:13发布

问题:

I have navigation component reused in multiple blade pages with some modification. so I used:

<script>
    window.app = new Vue({
        el: '#navigation',
        ....
    });
</script>

in my navigation component.

when I included it in profile component that have:

<script>
    window.app = new Vue({
        el: '#app',
        ....
    });
</script>

one of them doesn't work. I know that these two definitions have anastomosis but I don't know how resolve it.

In simple what the matter with this:

<script>
    window.app = new Vue({
        el: '#app1',
        ....
    });
</script>

<script>
    window.app = new Vue({
        el: '#app2',
        ....
    });
</script>

回答1:

You can use one Vue app declaration by HTML container. You can't use one declared component inside other declared component.

So you can do this.

<!DOCTYPE HTML>
<html lang="en">
    <head>
      .....
    </head>
    <body>
        <!-- MAYBE YOU CAN DO A BLADE TEMPLATE -->
        <div id="navitagion"></div>  
        <div id="app"></div>  
        <!--=============== scripts  ===============-->
        <script type="text/javascript" src="{{asset('path/to/vue.js')}}"></script>
        const app = new Vue({
           el: '#app',
        });
        const navigation = new Vue({
           el: '#navigation',
        });
    </body>
</html>

You can add references in any container to use outside of Vue declaration like javascript or in other Vue component

But try and let me know how it works :)



回答2:

you can only have one vue.js library loaded in a single HTML tag

<!DOCTYPE HTML>
<html lang="en">
<head>
  .....
</head>
<body>
    <div id="app">            
    </div>  
    <!--=============== scripts  ===============-->
    <script type="text/javascript" src="{{asset('path/to/vue.js')}}"></script>
    const app = new Vue({
    el: '#app',
    });
</body>
</html>