обратные вызовы success / error не вызываются после 'fetch' (на Backbone.Collection) - PullRequest
3 голосов
/ 28 октября 2011

У меня сейчас странная проблема с (или вокруг) Backbone.У меня есть объект коллекции Backbone, для которого я помещаю пользовательские сообщения об ошибках и об ошибках.

A) ----> Работа


    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()
    }

Работает нормально, когда Fubars.fetchSвызывается через обычный файл JavaScript A).Однако у меня возникла проблема, когда fetchS (и предоставляемые обратные вызовы) сам вызывается из обратного вызова ' ajaxPoll ' B).'fetchS' правильно вызывается, все обратные вызовы существуют, и сетевой вызов выполняется через Backbone.sync> JQuery.ajax.Но обратные вызовы success, error или statusCode никогда не вызываются (опять же, сетевой вызов определенно завершается и успешно возвращается).

Кто-нибудь сталкивался с этим?Я могу только думать, что обратные вызовы success и error могут как-то исчезать при выходе из afterPoll.Но «fubars» - это глобальный объект, так что это не имеет никакого смысла.

Я просматривал похожие посты ( здесь ), но не решил мою проблему.Любые идеи с благодарностью.

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 сентября 2012

Я подозреваю, что проблема может быть из-за отсутствия this .

Попробуйте заменить это утверждение:

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

этим утверждением:

    this.fetch(  { success : sFn, 
                error : eFn, 
                statusCode : cFn 
    });
0 голосов
/ 15 декабря 2011

сделать это для получения ..

    
    (function fetch(){success:...,error:... }).call();
    or
    (function fetch(){return {success:...,error:...}
     }).call();
    
    
...