2016-08-15 17 views
1

私はバックボーンjsを使用しており、ルートに基づいてフェッチ操作が開始されています。したがって、異なるルートでは、異なるコレクションのフェッチ操作が開始され、ページビューはコンテンツで更新されます。 Domが更新されるのを待ってから別のルートに進むと、問題はありません。しかし、ルートを直ちに切り替えると、2回のフェッチ操作がバックグラウンドで行われ、最初のビューではビューが更新され、2番目のビューではビューが更新されません。私は周りを検索し、abort()を呼び出すことができるjqxHrオブジェクトを返す操作を取得する変数を割り当てることができることを知りました。また、保留中のリクエストをプールに格納してすべてキャンセルする方法についても説明しました。未定義:TypeError xhr.abortは関数ではありません:バックボーン

次のコードは、ルート間で実装するように作業を進めようとしています。

var collection = new TableCollection(); 
var xhr = collection.fetch(); 
xhr.abort(); 

しかし

未定義に実行しています:例外TypeErrorのxhr.abortは関数ではありません:バックボーン

私は(XHR)をCONSOLE.LOGとき、私はこれらを持っているオブジェクトを取得しますプロパティ:

Object {}always:()catch: (a)done:()fail:()pipe:()progress:()promise: (a)state:()then: (b,d,e)__proto__: 

私はJquery 3.1.0、Backbone 1.3.3、Underscore 1.8.3を使用しています。

参考になると思います。

答えて

0

私は問題を理解しました。

フェッチ呼び出しをキャッシュするために使用された外部オーバーライドビューのbackbone-fetch-cache.jsを使用していました。このライブラリは、バックボーンのデフォルトのフェッチ操作をオーバーライドします。通常のjqXhrオブジェクトの代わりに約束オブジェクトを返していました。そこで、jqXhrオブジェクトを返すために既存のライブラリを修正しました。これは約束ではなく、アボートメソッドにアクセスできます。

関連する問題