3

を使用してBackbone.js、モデルまたはコレクション インスタンスで fetch メソッドを呼び出すときに、クライアント部分で Json ファイルからデータを取得したいと考えています。

私のurl propertyコレクション ( MyCol) は、次のような json ファイルを指しています。

[
  {title: "_My trip to Bali", src: "bali-trip.jpg"},
  {title: "_The flight home", src: "long-flight-oofta.jpg"},
  {title: "_Uploading pix", src: "too-many-pics.jpg"}
]

次のコマンドを実行します。

myCol = new MyCol();
myCol.fetch(); // the Request Method GET is ok 
myCol.toJSON(); // [] 
4

2 に答える 2

4

フェッチは同期機能ではないことに注意してください。fetchメソッドはサーバーへの要求を開始し、イベントまたはコールバックを介して応答を通知されます。

フェッチメソッドhttp://documentcloud.github.com/backbone/#Model-fetchのバックボーンドキュメントをご覧ください。

代わりに、このようなことを試してください。

myCol = new MyCol();
myCol.fetch({
    success: function() { //This is fired if the request is succesful
        myCol.toJSON();
    }
});

または

myCol = new MyCol();
myCol.on('change', function() { //This is fired if the model's attributes change
   myCol.toJSON();
});
myCol.fetch();

または、@ roberkulesが述べたように、fetchはjqXHRを返すので、これを行うことができます。

myCol = new MyCol();
myCol.fetch()
     .done(function() {
         myCol.toJSON();
      })
      .fail(function() {
          alert('Oh No!');
      });
于 2012-05-13T08:44:16.570 に答える
2

@fguillen は、 を使用するだけでコードをデバッグできると言っていますsuccess and error callbacks。とにかく、メンバーが文字列である必要があるため、エラーはjson形式にあります。

これを試してみてください。

[
  {"title": "_My trip to Bali", "src": "bali-trip.jpg"},
  {"title": "_The flight home", "src": "long-flight-oofta.jpg"},
  {"title": "_Uploading pix", "src": "too-many-pics.jpg"}
]
于 2012-05-13T08:35:06.027 に答える