2011-12-22 3 views
8

jsonをロードするためにbackbone.jsを取得しようとしています。 jsonがロードされますが、コレクションにアイテムを取得する方法がわかりません。 それは自動的に起こり、私はトレースできません。スコープの問題?jsonをバックボーンに追加する方法、フェッチを使用したjsコレクション

// JSコード

//model 
var Client = Backbone.Model.extend({ 
    defaults: { 
     name: 'nike', 
     img: "http://www.rcolepeterson.com/cole.jpg" 
    }, 
}); 
//collection 
var ClientCollection = Backbone.Collection.extend({ 
    defaults: { 
     model: Client 
    }, 
    model: Client, 
    url: 'json/client.json' 
}); 
//view 
var theView = Backbone.View.extend({ 
    initialize: function() { 
     this.collection = new ClientCollection(); 
     this.collection.bind("reset", this.render, this); 
     this.collection.bind("change", this.render, this); 
     this.collection.fetch(); 
    }, 
    render: function() { 
     alert("test" + this.collection.toJSON()); 
    } 
}); 
var myView = new theView(); 

// JSON

{ 
    "items": [ 
     { 
      "name": "WTBS", 
      "img": "no image" 
     }, 

     { 
      "name": "XYC", 
      "img": "no image" 
     } 
    ] 
} 

答えて

16

あなたのJSONが正しい形式ではありません、あなたはJSONを修正したり、解析方法でバックボーンにヒントを追加することができます。

var ClientCollection = Backbone.Collection.extend({ 
    defaults: { 
     model: Client 
    }, 
    model: Client, 
    url: 'json/client.json', 

    parse: function(response){ 
     return response.items; 
    } 
}); 

またはあなたのJSONを修正:

[ 
     { 
      "name": "WTBS", 
      "img": "no image" 
     }, 

     { 
      "name": "XYC", 
      "img": "no image" 
     } 
    ] 
+0

をまだそれが仕事を得ることができません。もし私がjsonを同じままにしてparse:function(response、xhr){ alert( "Collection:ClientList:parse:" + response.items.length)私は警告を得る。私はjsonを変更しようとしましたが、コレクションやビューでアラートが表示されませんでした。 return response.items; }アラートが表示されます。私のビューでレンダリング機能に警告が出ません。 –

+0

@ColePetersonあなたはjsfiddleを作ることができます – Esailija

+0

これを設定する方法は肯定的ではありませんでした。これはjsfiddleなので、私の例は不完全です。しかしここにそれはjsfiddle [link](http://jsfiddle.net/cole/bQHsb/)にあります。どんな助けも素晴らしいでしょう。再び構文解析は機能しますが、ビュー内のレンダリングは決して実行されません。 –

0

休息APIを使用している場合は、これらのパラメータをオフにしてみてください:

Backbone.emulateHTTP Backbone.emulateJSON

関連する問題