页面呈现一秒钟然后消失 - Vue JS
Page renders for a second and then disappears - Vue JS
我是 Vue 的新手,我正在尝试构建一个简单的搜索功能,该功能接受输入查询和 returns 所有匹配该查询的用户。
我正在尝试通过跟随它的 video demonstration 来做到这一点。
我不知道我哪里出错了,因为我的控制台没有错误,但是我目前面临页面加载的问题,我可以看到内容一秒钟,然后它闪烁白色,然后页面变为空白。
该页面的代码如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta id="X-CSRF-TOKEN" content="{{ csrf_token() }}">
<title>Laravel</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.min.css" />
</head>
<body>
<div class="container" id="searchPage">
<h1>Real Time Search</h1>
<form class="form-horizontal" v-on="submit: false">
<div class="form-group">
<label class="control-label">Search:</label>
<input type="text" class="form-control" v-model="query" v-on="keyup: search">
</div>
</form>
<pre>@{{ $data | json }}</pre>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.1/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.0.3/vue-resource.min.js"></script>
<script src="assets/app.js"></script>
</body>
</html>
我的 app.js
脚本如下所示:
Vue.http.headers.common['X-CSRF-TOKEN'] = document.getElementById('X-CSRF-TOKEN').getAttribute('content');
new Vue({
el: '#searchPage',
data: {
query: '',
users: [],
},
methods: {
search: function() {
this.$http.post('/', { query: this.query } ).then(function(response) {
console.log(response);
}, function(response) {
// error callback
});
}
}
});
我哪里错了?或者是什么原因造成的?
这里有几件事。首先,您使用的是 Vue 2.0。在 vue 2.0 中,v-on="submit:...";
语法已被弃用(事实上,该语法似乎来自 0.12)。如果你想停止表单提交,你现在需要添加 v-on:submit.prevent
:
<!--This will stop the form from submitting -->
<form class="form-horizontal" v-on:submit.prevent>
您对 v-on="keyup: search"
也有类似的问题,应该是 v-on:keyup="search"
<!-- Call the search method on keyup -->
<input type="text" class="form-control" v-model="query" v-on:keyup="search">
值得一看的文档位于:https://vuejs.org/guide/ 以熟悉基本的 2.0 语法。
好的,一个不同的,更简单的答案。我刚刚花了几个小时试图解决相同的症状。原来我的问题是这样的:
是的,我会在第二个条件中使用“=”而不是“==”。现在 VB 你永远不会遇到那个问题......
这就是为什么这会阻止整个页面在控制台中显示而没有任何错误,我不确定,但我不得不说总的来说我喜欢 Vue JS(这是我第一次真正可以编写客户端应用程序富有成效地)。
我是 Vue 的新手,我正在尝试构建一个简单的搜索功能,该功能接受输入查询和 returns 所有匹配该查询的用户。
我正在尝试通过跟随它的 video demonstration 来做到这一点。
我不知道我哪里出错了,因为我的控制台没有错误,但是我目前面临页面加载的问题,我可以看到内容一秒钟,然后它闪烁白色,然后页面变为空白。
该页面的代码如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta id="X-CSRF-TOKEN" content="{{ csrf_token() }}">
<title>Laravel</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.min.css" />
</head>
<body>
<div class="container" id="searchPage">
<h1>Real Time Search</h1>
<form class="form-horizontal" v-on="submit: false">
<div class="form-group">
<label class="control-label">Search:</label>
<input type="text" class="form-control" v-model="query" v-on="keyup: search">
</div>
</form>
<pre>@{{ $data | json }}</pre>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.1/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.0.3/vue-resource.min.js"></script>
<script src="assets/app.js"></script>
</body>
</html>
我的 app.js
脚本如下所示:
Vue.http.headers.common['X-CSRF-TOKEN'] = document.getElementById('X-CSRF-TOKEN').getAttribute('content');
new Vue({
el: '#searchPage',
data: {
query: '',
users: [],
},
methods: {
search: function() {
this.$http.post('/', { query: this.query } ).then(function(response) {
console.log(response);
}, function(response) {
// error callback
});
}
}
});
我哪里错了?或者是什么原因造成的?
这里有几件事。首先,您使用的是 Vue 2.0。在 vue 2.0 中,v-on="submit:...";
语法已被弃用(事实上,该语法似乎来自 0.12)。如果你想停止表单提交,你现在需要添加 v-on:submit.prevent
:
<!--This will stop the form from submitting -->
<form class="form-horizontal" v-on:submit.prevent>
您对 v-on="keyup: search"
也有类似的问题,应该是 v-on:keyup="search"
<!-- Call the search method on keyup -->
<input type="text" class="form-control" v-model="query" v-on:keyup="search">
值得一看的文档位于:https://vuejs.org/guide/ 以熟悉基本的 2.0 语法。
好的,一个不同的,更简单的答案。我刚刚花了几个小时试图解决相同的症状。原来我的问题是这样的:
是的,我会在第二个条件中使用“=”而不是“==”。现在 VB 你永远不会遇到那个问题......
这就是为什么这会阻止整个页面在控制台中显示而没有任何错误,我不确定,但我不得不说总的来说我喜欢 Vue JS(这是我第一次真正可以编写客户端应用程序富有成效地)。