Używam Vuejs . To jest mój znacznik:
<body>
<div id="main">
<div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
</div>
</body>
To jest mój kod:
var main = new Vue({
el: '#main',
data: {
currentActivity: 'home'
}
})
;
Kiedy ładuję stronę, otrzymuję takie ostrzeżenie:
[Vue warn]: Cannot find element: #main
Co ja robię źle?
javascript
mvvm
vue.js
dopatraman
źródło
źródło
Odpowiedzi:
Myślę, że problem polega na tym, że twój skrypt jest wykonywany przed załadowaniem docelowego elementu dom do domeny ... jednym z powodów może być to, że umieściłeś skrypt w nagłówku strony lub w tagu skryptu, który jest umieszczony przed elementem div
#main
. Więc kiedy skrypt jest wykonywany, nie będzie w stanie znaleźć elementu docelowego, więc błąd.Jednym z rozwiązań jest umieszczenie skryptu w module obsługi zdarzeń ładowania, takim jak
Inna składnia
źródło
addEventListener
metoda ta jest „technicznie” łatwiejszym do utrzymania podejściem, ponieważ nie przesłaniawindow.onload
właściwości globalnej .<head></head>
sekcji spowodowało błąd. Oczekiwanie na załadowanie okna działa.Rozwiązałem problem, dodając atrybut „defer” do elementu „script”.
źródło
defer
atrybutu tagu skryptu tutaj . Spowoduje to opóźnienie uruchomienia kodu JS do czasu przeanalizowania DOM, ale przed uruchomieniemonload
zdarzenia window .Otrzymuję ten sam błąd. rozwiązaniem jest umieszczenie kodu skryptu przed końcem treści, a nie w sekcji head.
źródło
Najprościej jest umieścić skrypt pod dokumentem, tuż przed
</body>
tagiem zamykającym :plik app.js:
źródło
Możesz go rozwiązać na dwa sposoby.
gdzie musisz umieścić ten sam kod javascript, który napisałeś w dowolnym innym pliku JavaScript lub w pliku html.
źródło
Myślę, że czasami głupie błędy mogą spowodować ten błąd.
Do
źródło