问题
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>
来源:https://stackoverflow.com/questions/53887003/define-vue-application-in-blade-component