[英]v-on:click does not work (vue.js)
我尝试进入vue.js,但被卡住了。
HTML页面:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="test.js"></script>
</head>
<body>
<div id="app">
<button v-on:click="exampleFunction">General</button>
</div>
</body>
</html>
test.js
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
},
created: function () {
console.log('Vue instance was created');
},
methods: {
exampleFunction: function () {
console.log('This is an example function');
}
},
destroyed: function () {
console.log('Vue instance was destroyed');
}
})
app.exampleFunction();
控制台输出:
Vue instance was created
This is an example function
问题在于该按钮不起作用,单击时在控制台上什么也没写。
有什么建议吗?
在一段代码中效果很好。 您可能希望将Vue调用包装在DOMContentLoaded中,以确保DOM在Vue尝试附加到它之前就已经存在,如下所述。
document.addEventListener("DOMContentLoaded", function(event) { var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' }, created: function() { console.log('Vue instance was created'); }, methods: { exampleFunction: function() { console.log('This is an example function'); } }, destroyed: function() { console.log('Vue instance was destroyed'); } }) app.exampleFunction(); });
<script src="https://cdn.jsdelivr.net/npm/vue"></script> <div id="app"> <button v-on:click="exampleFunction">General</button> </div>
问题是在页面上创建DOM元素之前,您正在加载test.js
脚本。 换句话说,在创建任何内容之前,脚本正在页面上执行。
虽然DOMContentLoaded是解决问题的一种方法,但我建议将脚本标签移到body元素的底部。 请记住, <script>
标记是渲染块,通常将其卸载到<body>
元素的底部以提高性能。 这样,它还应该解决您的问题。
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<button v-on:click="exampleFunction">General</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="test.js"></script>
</body>
</html>
您可以在这里查看我的示例https://codepen.io/BenCodeZen/project/editor/XWMNNg
您的代码没有错。 该代码在我的浏览器中运行正常。
删除浏览器的缓存,然后重试
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.