J'utilise Vuejs . Ceci est mon balisage:
<body>
<div id="main">
<div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
</div>
</body>
Ceci est mon code:
var main = new Vue({
el: '#main',
data: {
currentActivity: 'home'
}
})
;
Lorsque je charge la page, je reçois cet avertissement:
[Vue warn]: Cannot find element: #main
Qu'est-ce que je fais mal?
Je pense que le problème est que votre script est exécuté avant que l'élément dom cible soit chargé dans le dom ... une des raisons peut être que vous avez placé votre script dans l'en-tête de la page ou dans une balise de script placée avant l'élément div #main
. Ainsi, lorsque le script est exécuté, il ne peut pas trouver l'élément cible, donc l'erreur.
Une solution consiste à placer votre script dans le gestionnaire d'événements load, comme
window.onload = function () {
var main = new Vue({
el: '#main',
data: {
currentActivity: 'home'
}
});
}
Une autre syntaxe
window.addEventListener('load', function () {
//your script
})
J'ai résolu le problème en ajoutant l'attribut 'différer' à l'élément 'script'.
J'ai la même erreur. la solution consiste à placer votre code de script avant la fin du corps, pas dans la section head.
Le plus simple est de placer le script sous le document, juste avant la balise de fermeture </body>
:
<body>
<div id="main">
<div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
</div>
<script src="app.js"></script>
</body>
fichier app.js:
var main = new Vue({
el: '#main',
data: {
currentActivity: 'home'
}
});