Ich benutze Vuejs . Das ist mein Markup:
<body>
<div id="main">
<div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
</div>
</body>
Das ist mein Code:
var main = new Vue({
el: '#main',
data: {
currentActivity: 'home'
}
})
;
Wenn ich die Seite lade, erhalte ich folgende Warnung:
[Vue warn]: Cannot find element: #main
Was mache ich falsch?
javascript
mvvm
vue.js
Dopatraman
quelle
quelle
Antworten:
Ich denke, das Problem ist, dass Ihr Skript ausgeführt wird, bevor das Ziel-Dom-Element in das Dom geladen wird. Ein Grund könnte sein, dass Sie Ihr Skript im Kopf der Seite oder in einem Skript-Tag platziert haben, das vor dem div-Element platziert ist
#main
. Wenn das Skript ausgeführt wird, kann es das Zielelement und damit den Fehler nicht finden.Eine Lösung besteht darin, Ihr Skript wie im Ladeereignishandler zu platzieren
Eine andere Syntax
quelle
addEventListener
Methode "technisch" ein besser zu wartender Ansatz ist, da sie die globalewindow.onload
Eigenschaft nicht überschreibt .<head></head>
Abschnitt hat den Fehler verursacht. Das Warten auf das Laden des Fensters funktioniert.Ich habe das Problem gelöst, indem ich dem Element 'script' das Attribut 'defer' hinzugefügt habe.
quelle
defer
Attributs des Skript-Tags finden Sie hier . Die Ausführung des JS-Codes wird verzögert, bis das DOM analysiert wurde, aber bevor das Fensterereignisonload
ausgelöst wird.Ich bekomme den gleichen Fehler. Die Lösung besteht darin, Ihren Skriptcode vor das Ende des Körpers zu stellen, nicht in den Kopfbereich.
quelle
Die einfache Sache ist, das Skript direkt vor Ihrem schließenden
</body>
Tag unter das Dokument zu setzen :app.js Datei:
quelle
Sie können es auf zwei Arten lösen.
Hier müssen Sie denselben Javascript-Code einfügen, den Sie in eine andere JavaScript-Datei oder in eine HTML-Datei geschrieben haben.
quelle
Ich denke manchmal können dumme Fehler uns diesen Fehler geben.
Zu
quelle