1

モデルがあり、を使用してフェッチしようとしていmodel.fetch();ます。モデルのurlRootはアプリケーションのバックエンド( "/ backend / item")に設定されていますが、現在、バックエンド環境がありません。そこで、結果をあざけることにしました。ルーター内にルートを追加しました。

"backend/item/:id": "data_getItem"

および関数:

data_getItem: function(id) {
  console.log("data_getItem: "+ id);
  return {
    animals: [
      {
        name: 'flying cat',
        type: 'none'
      }
    ]
  };
}

アプリケーションを実行すると、「http://127.0.0.1:8000/backend/item/1"へのajax呼び出しが表示されますが、コンソールが空でエラーが発生します(フェッチ関数はエラーコールバックに戻ります)。何故ですか?バックエンドをモックするにはどうすればよいですか?

編集実際に@rjzは私がやりたいことを手伝ってくれましたが、ajax呼び出しがバックボーンルーターによってキャッチできるかどうかを本当に知りたいです。私の直感では、ajax呼び出しはバックボーンクライアントコードを実行できないため、ルーターの概念は関係ありません。私は正しいですか?..

4

1 に答える 1

0

Backbone.RouterAJAX呼び出しをキャッチするためにを使用したくないと思います。プロジェクトのバックエンドをモックアウトすることが目標である場合は、テストフレームワークを使用してこれを行う必要があります。ダウンで汚い方法は、次のようなものを使用することです。

または、単体テストのようなことをしたい場合は、JasmineとそのAJAXモックライブラリを調べます。

あなたの質問に答えるために更新してください:

簡単な答えはノーですBackbone.Router。AJAX呼び出しをインターセプトすることはできません。

これは、ルーターがURLに関係するイベントをリッスンすることによって機能するためです。具体的には、ルーターはhashchangeまたはpopstateイベントをリッスンしています(使用しているかどうかによって異なりますpushState)。AJAX呼び出しはURLと相互作用しないため、このシステムをほぼ完全にバイパスします。

于 2012-11-12T00:49:52.090 に答える