2012-12-24 16 views
6

モデルをサーバーからフェッチすると問題が発生しています。正しいJSONがchrome開発ツールのサーバーから返されてきましたが、モデルは返された値で更新されません。バックボーンModel.fetchはデータを返しますが、モデルは更新しません

var listtemplate = new ListTemplateModel.Model({id: id}); 
listtemplate.fetch();

この時点で、Chrome開発ツールの正しいデータが表示されます。

 
{ 
    "title": "Template one", 
    "id": "template_one", 
    "steps": [ 
    { 
     "description": "I love it", 
     "id": 1, 
     "created_at": "2012-12-24T18:01:48.402Z" 
    }, 
    { 
     "description": "This is rubbish!", 
     "id": 1, 
     "created_at": "2012-12-24T18:01:48.402Z" 
    } 
    ], 
    "created_at": "2012-12-24T18:01:48.402Z" 
} 

が、JSONをロギングコンソールは私だけでデフォルト値とモデルの作成時に渡されたIDを示しています。ここでは、サーバーから戻ってきたものです。

console.log(listtemplate.toJSON());

、これが返されます。

{id: "template_one", title: "", steps: Array[0]} 
私のモデルはこのようになります

(私はRequire.jsを使用していますが、それ故にモデルは、上記ListTemplateModelに名前が変更されました)

 
var Model = B.Model.extend({ 
     defaults: { 
      title: '', 
      id: 0, 
      steps: [] 
     }, 
     urlRoot: 'xxx' 
    }); 

任意のアイデアを?

編集 @ Amulyaの回答が正しいトラックに設定されていて、その後「私」が見つかりました。フェッチを完了するためにあなたが待っていないかもしれないので、

listtemplate.fetch().then(function(){ 
    //update the view 
});
+0

@Amulyaの答えは正しいトラックに私を設定し、私は "その後"を発見しました。これが誰かが同じ問題にぶつかるのを助けることを願って –

答えて

9

理由:これは同じ問題に実行している誰かがお役に立てば幸いです。これを試してみてください:

var listtemplate = new ListTemplateModel.Model({id: id}); 
listtemplate.fetch({ 
    success: function() { 
     // fetch successfully completed 
     console.log(listtemplate.toJSON()); 
    }, 
    error: function() { 
     console.log('Failed to fetch!'); 
    } 
}); 
+0

甘い!それはそうするようだ。成功ビューのコールバックにレンダリングの内容を表示する必要がありますか? –

+0

はい、そうです。「成功」コールバックのときにビューをレンダリングする必要があります。 –

関連する問題