1

バックボーンコレクションを使用してjsonデータの取得を初期化しようとしましたが、データが空であることが判明しました。バックボーンコレクションはjsonデータをモデルに自動的に解析しますか、それとも手動で解析する必要がありますか?

 var Book = Backbone.Model.extend({
    title:"",
    isbn:"",
    img:""  
 });

 var Books = Backbone.Collection.extend({
    model:Book,
    url:'latest.json',
    // parse:function(data){
    //  console.log(data);
    // },       
    initialize: function(){
        this.fetch();
    }
 });

サンプルのjsonを追加するように編集し、jsonlint.comで検証します。

[
    {"title":"American Pie","isbn":"345354356","img":"/image/pie.png"},
    {"title":"Long Tails","isbn":"567575576g","img":"/image/long_tails.png"},
    {"title":"Pirates","isbn":"567575765","img":"/image/pirates.png"}
]

JSFiddleリンクに追加されました。

http://jsfiddle.net/mochatony/5E3Nc/14/

4

1 に答える 1

1

これらが最初に機能することを確認する必要があります

  • スクリプト エラーはありません (javascript コンソールで調べてください)

  • Collection.fetch は正しい URL へのリクエストを作成します (Chrome Web インスペクタのリソース セクションを参照)。

  • 応答mime/typeが正しい「application/json」であり、サーバーが実際に JSON 文字列を提供していることを確認します

  • JSON応答が適切な形式であることを確認してください(私はこの問題を抱えていました。オブジェクトではなく配列でなければなりません。例[{},{},{},{}]:)

  • 最後にサーバーから更新します (キャッシュをクリアします)

アップデート

http://jsfiddle.net/5E3Nc/16/の使用を示すための JsFiddle を次に示します。

注:モデル コレクションを構築するサーバーからカスタム応答が送信された場合にのみ、解析を明示的に記述する必要があります。

ところで、私はあなたがこれをしたことに気づきました

initialize:function(){
  this.fetch();
}

これはうまくいきません。たとえば、コレクション自体の外部でコレクションを使用することが期待されています

var col = Backbone.Collection.extend({url:"data.json"});
var instance = new col({model:Tweet});
instance.fetch();
于 2012-05-03T08:37:07.820 に答える