2015-04-27 122 views
0

好的。 我知道這裏有很多問題,但我的問題與它有點不同。無法從服務器json響應創建主幹js集合

我有laravel作爲後端服務器和所定義的路線:

路線::交( '/ ALLUSERS',陣列( '用途'=> 'UsersController @索引');

@索引方法(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':'[email protected]', 
    }, 
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="[email protected]"}, Object { id=2, name="anotheruser", email="[email protected]"}] 

請,任何建議。

謝謝你提前。

回答

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(); 
    } 
}); 
+0

不要使用'fetch'without一個錯誤回調,因爲這將調試和錯誤處理地獄出問題的時候。 – Exinferis

+0

只是試圖保持答案簡單而直接的問題,感謝評論雖然 – StateLess