行。 我知道这里有很多问题要问这个问题,但我的问题与它有点不同。
我有laravel作为后端服务器和定义的路由:
路线::交( '/ ALLUSERS',阵列( '使用'=> 'UsersController @索引');
@index方法(laravel):
public function index()
{
//
$user=DB::table('users')->select('id','name','email')->get();;
if($user){
return response()->json($user);
}
return "failed";
}
然后,我有一个backbonejs集合和模型如下: 用户模型:
user = Backbone.Model.extend({
urlRoot: '/user/'+this.id,
default:{
'name':'',
'email':'unknown@no-name.com',
},
render:function(){
console.log(this.name);
}
, initialize:function(){
console.log('model user created'+this.cid);
console.log(this.name);
}
});
和骨干收集:
UserCollection = Backbone.Collection.extend({
model:user,
url:'/allusers/',
parse:function(resp,xhr){
rt= _.toArray(resp);
return rt;
},
initialize:function(){
this.fetch();
}
});
但是无法创建集合。集合的models
属性始终为0.
这是来自laravel的JSON响应:
[Object { id=1, name="abc", email="someone@google.com"}, Object { id=2, name="anotheruser", email="anotheruser@gmail.com"}]
请,任何建议。
提前谢谢你。
答案 0 :(得分:0)
您没有从laravel返回有效的JSON
。 Backbone认为它是错误的并触发错误回调。使用此代码段返回JSON
。
if($user){
return Response::json($user->toArray());
}
随着完美的json返回,你不必在模型中解析。所以你可以从你的模型中删除解析函数(除非你想操纵数据)。
所以你的模型应该是这样的,
UserCollection = Backbone.Collection.extend({
model:user,
url:'/allusers/',
initialize:function(){
this.fetch();
}
});