第一次没有用脚手架,直接用script标签导入vue的时候出现的一个错误。
以下是错误案例(简化版)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>none</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="assets/js/libs/vue.js"></script>
<script>
new Vue({
el: '#app1',
data: {
tests: [{
num1: 'hello'
}, {
num1: 'hello2'
}]
}
})
</script>
</head>
<body>
<div id="app1">
<div v-for="test in tests">
<div>{{test.num1}}</div>
</div>
</div>
</body>
</html>
结果无法用v-for绑定上元素并报错——[Vue warn]: Cannot find element: #app1
其实是没弄清楚js文件在head标签还是body标签内的区别。
——放入html的head,是页面加载前就运行,放入body中,则加载后才运行javascript的代码
这里找不到元素app1是因为头部的js代码在页面还未加载前就运行,这个时候还没有加载元素Id,vue获取不到相应的元素
<div id="app1">
<div v-for="test in tests">
<div>{{test.num1}}</div>
</div>
</div>
修改后:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>none</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="assets/js/libs/vue.js"></script>
</head>
<body>
<div id="app1">
<div v-for="test in tests">
<div>{{test.num1}}</div>
</div>
</div>
<script>
new Vue({
el: '#app1',
data: {
tests: [{
num1: 'hello'
}, {
num1: 'hello2'
}]
}
})
</script>
</body>
</html>