Laravel 5 VueJS&;拉威尔5.3
Laravel 5.3+Vue JS+ 我正在尝试通过获取数据(使用ajax)来实现简单的foreach循环 我的vuejs脚本文件:Laravel 5 VueJS&;拉威尔5.3,laravel-5,vue.js,vue-resource,Laravel 5,Vue.js,Vue Resource,Laravel 5.3+Vue JS+ 我正在尝试通过获取数据(使用ajax)来实现简单的foreach循环 我的vuejs脚本文件: var vm = new Vue({ el:'#posts-app', methods: { fetchPosts: function(){ this.$http.get('/api/fetchPosts',function(data){ this.$set('allposts',data); }
var vm = new Vue({
el:'#posts-app',
methods: {
fetchPosts: function(){
this.$http.get('/api/fetchPosts',function(data){
this.$set('allposts',data);
});
}
},
ready: function(){
this.fetchPosts();
console.log(this.allposts);
}});
拉威尔控制器:
Route::get('api/fetchPosts', function(){
return App\Post::all();});
刀片模板:
<div id="posts-app">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Posts</h1>
<hr />
<table class="table table-hover">
<thead>
<tr>
<td>ID</td>
<td>Posted</td>
<td>Title</td>
<td>Author</td>
</tr>
</thead>
<tbody>
<tr v-for="post in allposts">
<td>@{{ post.id }}</td>
<td>@{{ post.id }}</td>
<td>@{{ post.id }}</td>
<td>@{{ post.id }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
我得到一个空页面,但我有一个ajax响应,其中包含来自数据库的所有帖子的有效返回代码。我做错了什么?
谢谢您的vue资源调用似乎不正确。当前版本返回一个承诺,第一个函数是成功回调。由于您没有提到正在使用的vue和vue资源的版本,因此我参考了CDN版本 一份有效的推荐信是
<html>
<body>
<div id="posts-app">
<ul>
<li v-for="post in posts">{{post.title}}</li>
</ul>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.0.1/vue-resource.min.js"></script>
<script>
var vm = new Vue({
el:'#posts-app',
methods: {
fetchPosts: function () {
this.$http.get('/api/fetchPosts').then(function (response) {
this.$set('posts', response.body);
// or
// this.$set('posts', response.data);
});
}
},
ready: function () {
this.fetchPosts();
}
});
</script>
</body>
</html>
看起来您的vue资源调用不正确。当前版本返回一个承诺,第一个函数是成功回调。由于您没有提到正在使用的vue和vue资源的版本,因此我参考了CDN版本 一份有效的推荐信是
<html>
<body>
<div id="posts-app">
<ul>
<li v-for="post in posts">{{post.title}}</li>
</ul>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.0.1/vue-resource.min.js"></script>
<script>
var vm = new Vue({
el:'#posts-app',
methods: {
fetchPosts: function () {
this.$http.get('/api/fetchPosts').then(function (response) {
this.$set('posts', response.body);
// or
// this.$set('posts', response.data);
});
}
},
ready: function () {
this.fetchPosts();
}
});
</script>
</body>
</html>
嗯,我发现了问题所在
当我从blade template调用vue脚本时,它工作正常,但如果我从.js文件调用它,它就不工作了……好吧,我发现了问题所在
当我从blade模板调用vue脚本时,它工作正常,但如果我从.js文件调用它,它就不工作了。…从laravel以json的形式返回数据,如下所示
Route::get('fetchPosts', function() {
$data = [
[
'id' => 1,
'title' => 'title one',
],
[
'id' => 2,
'title' => 'title two',
]
];
return response()->json($data);
});
并在数据对象中将帖子声明为空数组
<script>
var vm = new Vue({
el: '#posts-app',
data: {
posts: [],
},
methods: {
fetchPosts: function() {
this.$http.get('/api/fetchPosts').then(function(response) {
this.$set('posts', response.data);
});
}
},
ready: function() {
this.fetchPosts();
}
});
</script>
var vm=新的Vue({
el:“#发布应用程序”,
数据:{
员额:[],
},
方法:{
fetchPosts:function(){
这是.http.get('/api/fetchPosts')。然后(函数(响应){
此.$set('posts',response.data);
});
}
},
就绪:函数(){
this.fetchPosts();
}
});
从laravel返回json格式的数据,如下所示
Route::get('fetchPosts', function() {
$data = [
[
'id' => 1,
'title' => 'title one',
],
[
'id' => 2,
'title' => 'title two',
]
];
return response()->json($data);
});
并在数据对象中将帖子声明为空数组
<script>
var vm = new Vue({
el: '#posts-app',
data: {
posts: [],
},
methods: {
fetchPosts: function() {
this.$http.get('/api/fetchPosts').then(function(response) {
this.$set('posts', response.data);
});
}
},
ready: function() {
this.fetchPosts();
}
});
</script>
var vm=新的Vue({
el:“#发布应用程序”,
数据:{
员额:[],
},
方法:{
fetchPosts:function(){
这是.http.get('/api/fetchPosts')。然后(函数(响应){
此.$set('posts',response.data);
});
}
},
就绪:函数(){
this.fetchPosts();
}
});
我没有理解你所说的“如果我从.js文件调用它”的意思。您没有显示如何将视图块包含在刀片模板中。这就是为什么我将所有内容都包含在一个脚本中,这样您就可以看到各个部分是如何组合在一起的。我的意思是,如果我将脚本放在刀片模板中,它就可以工作,但如果我将脚本放在外部js文件中,并将其包含在html中,脚本就不能工作。我不理解您所说的“如果我从.js文件调用它”。您没有显示如何将视图块包含在刀片模板中。这就是为什么我将所有内容都包含在一个脚本中,这样您就可以看到各个部分是如何组合在一起的。我的意思是,如果我将脚本放在刀片模板中,它会工作,但如果我将脚本放在外部js文件中,并将其包含在html中,则脚本不会工作。