成功/エラーコールバックは 'fetch'の後に呼び出されません(Backbone.Collection上)

私は現在、バックボーン(またはその周辺)に奇妙な問題を抱えています。私はカスタム成功とエラーのコールバックを置くバックボーンコレクションオブジェクトを持っています。

A) ----> Working

    Fubars = Backbone.Collection.extend({ 

      url: "/listfubar",
      model: Fubar,
      fetchS: function() {
        fetch(  { success : sFn, 
                    error : eFn, 
                    statusCode : cFn 
        }); 
      },  
    })

    var fbars = new Fubars(); 
    fbars.fetchS();

B) ----> Breaking

    afterPoll = function() {   
        fbars.fetchS()
    }

This works fine when 'Fubars.fetchS' is being invoked through a regular JavaScript file A). However, I'm having a problem when fetchS (and supplied callbacks) is itself invoked from an 'ajaxPoll' callback B) . 'fetchS' is properly called, the callbacks all exist, and the network call is made through Backbone.sync > JQuery.ajax. But the success, error, or statusCode callbacks are never invoked (again, the network call definitely goes out, and returns successfully).

誰もこれにぶつかるのですか? 'afterPoll'が終了すると、成功とエラーのコールバックが何とか消えるかもしれないとしか思えません。しかし、「fubars」はグローバルオブジェクトなので意味がありません。

私は同様の投稿(ここ)を見ましたが、私の問題を解決していません。どんな洞察力も大変ありがとうございます。

ありがとう

3
例外が発生しているかどうかを確認するためにコンソールウィンドウを開いていますか?
追加された 著者 Brian Genisio,
例外なく;ポールコールバックは機能しましたが、フェッチの後の「成功」コールバックは機能しませんでした。この問題を解決するまでに終わりました。>「この参照」は消えました。ポーリングコールバックがfetchSを呼び出すと、ネットワークコールの後でその "成功"コールバックが消えてしまいます>これをフェッチ、フェッチ、同期(実際に$ .ajaxを呼び出すBb fn)などで 'bindAll'しようとしましたが、 >ポーリング後に$ .ajaxを直接呼び出してしまい、結果でFubarsコレクションを手動で設定しても>興味深い試行であるhyperslugの提案を試しませんでした。本当に「これ」がどこに失われるのか知りたい
追加された 著者 Nutritioustim,
fetch()fbars インスタンスへの参照が必要かどうか疑問です。 afterPoll = _.bind(fbars.fetchS、fbars);を実行するとどうなりますか。 afterPoll();
追加された 著者 hyperslug,
成功とエラーのコールバックを渡すBackbone.collectionの元のfetchメソッドを使用しない理由は何ですか?次のようにします。Fubars.fetch({success:sFn、error:eFn}); documentcloud.github.com/backbone/#Collection-fetch では、メソッドを取得する引数を渡します。
追加された 著者 matiasfh,
コールバックがまったく呼び出されないか、または動作しないかどうかを明確にする必要があります。私は彼らが呼び出されているが、彼らは正しい "this"を持っていないために動作しないので、現在のオブジェクトをコールバックで "this"として設定するにはbindまたはbindAllを使うべきです。 documentcloud.github.com/underscore/#bindAll
追加された 著者 dira,

2 答え

フェッチのためにこれを行う..

    
    (function fetch(){success:...,error:... }).call();
    or
    (function fetch(){return {success:...,error:...}
     }).call();
    
    
0
追加された

私は、このの行方不明のために問題が発生している可能性があります。

次の文を置き換えてみてください。

    fetch(  { success : sFn, 
                error : eFn, 
                statusCode : cFn 
    }); 

この声明で:

    this.fetch(  { success : sFn, 
                error : eFn, 
                statusCode : cFn 
    });
0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript