6

モデルがサーバーからフェッチされるときに問題が発生しています。Chrome 開発ツールでサーバーから返された正しい JSON が表示されますが、返された値でモデルが更新されません。

var listtemplate = 新しい ListTemplateModel.Model({id: id});
listtemplate.fetch();

この時点で、Chrome 開発ツールに正しいデータが表示されます。サーバーから返されるものは次のとおりです。

{
  "title": "テンプレート 1",
  "id": "template_one",
  "ステップ": [
    {
      "説明": "大好きです",
      "ID": 1,
      "created_at": "2012-12-24T18:01:48.402Z"
    }、
    {
      "description": "これはゴミです!",
      "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"、タイトル: ""、手順: 配列[0]}
 

私のモデルは次のようになります (私は Require.js を使用しているため、モデルの名前は上記の ListTemplateModel に変更されています)

var Model = B.Model.extend({
        デフォルト: {
            題名: ''、
            ID: 0,
            手順: []
        }、
        urlRoot: 'xxx'
    });

何か案は?

@Amulyaの回答を編集して正しい軌道に乗せ、「その後」を発見しましたこれが誰かが同じ問題に遭遇するのに役立つことを願っています:

listtemplate.fetch().then(関数(){
   //ビューを更新
});
4

1 に答える 1

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!');
    }
});
于 2012-12-24T20:39:07.417 に答える