Estou usando o Vuejs . Esta é a minha marcação:
<body>
<div id="main">
<div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
</div>
</body>
Este é o meu código:
var main = new Vue({
el: '#main',
data: {
currentActivity: 'home'
}
})
;
Quando carrego a página, recebo este aviso:
[Vue warn]: Cannot find element: #main
O que estou fazendo de errado?
javascript
mvvm
vue.js
dopatraman
fonte
fonte
Respostas:
Eu acho que o problema é que seu script é executado antes que o elemento dom de destino seja carregado no dom ... uma razão pode ser que você colocou seu script na cabeça da página ou em uma tag de script que é colocada antes do elemento div
#main
. Portanto, quando o script for executado, não será possível encontrar o elemento de destino, portanto, o erro.Uma solução é colocar seu script no manipulador de eventos de carregamento, como
Outra sintaxe
fonte
addEventListener
método é "tecnicamente" uma abordagem mais sustentável, porque não está substituindo awindow.onload
propriedade global .<head></head>
seção foi o que me causou o erro. Aguardar o carregamento da janela está funcionando.Resolvi o problema adicionando o atributo 'adiar' ao elemento 'script'.
fonte
defer
atributo da tag de script funciona aqui . Ele atrasará a execução do código JS até que o DOM tenha sido analisado, mas antes que oonload
evento da janela seja acionado.Eu recebo o mesmo erro. a solução é colocar seu código de script antes do final do corpo, não na seção principal.
fonte
O mais simples é colocar o script abaixo do documento, pouco antes da sua
</body>
tag de fechamento :arquivo app.js:
fonte
Você pode resolvê-lo de duas maneiras.
onde você precisa colocar o mesmo código javascript que você escreveu em qualquer outro arquivo JavaScript ou no arquivo html.
fonte
Às vezes, acho que erros estúpidos podem nos dar esse erro.
Para
fonte