2016-09-28 2 views
1

Ich bin gerade dabei, an der App zu arbeiten, die durch modulares Muster ist.Rebind nach Ajax ist fertig

Das Problem, das ich gerade bekomme, ist, dass, sobald der Ajax abgeschlossen ist, ich in der Lage sein möchte, eine Funktion innerhalb des Objekts auszulösen. Das Objekt, das ich sehen kann, aber wenn ich eine Funktion spezifiziere, schlägt es fehl und kommt als Undefined zurück.

JS

var TestCase = { 
    settings: { 
    cu: $('.select'), 
    }, 

    init: function() { 
    se = this.settings; 
    }, 

    windowsReady: function() { 
    TestCase.init(); 
    if ($.fn.selectBox) { 
     TestCase.selectBind(); 
    } 
    }, 

    ajaxComp: function() { 
    TestCase.init(); 
    TestCase.selectBind(); 
    }, 

    selectBind: function(){ 
    se.cu.selectBox(); 
    }, 

}; 

JS Fire - Die selectBind funktioniert gut, wenn sein Betrieb durch den Aufruf bereit geladen. Wie bereits erwähnt, kommt die Ajaxcomplete als Undefined für TestCase.ajaxComp(); oder einen direkten Aufruf für TestCase.selectBind(); zurück. Bitte beachten Sie, dass wenn ich console.log(TestCase) es alle Objekte auflistet.

$(document).ready(function() { 
    TestCase.windowsReady(); 
}); 

$(document).ajaxSuccess(function() { 
    console.log(TestCase); 
    TestCase.ajaxComp(); 
    console.log('completed'); 
}); 
+0

Warum nicht einfach Linien setzen 6-8 in der $ (document) .ready() aufrufen? –

+0

Was meinst du "kommt zurück wie undefiniert"? Möglicherweise möchten Sie die gesamte Fehlernachricht einschließen, die Sie erhalten. –

+0

@MikeMcCaughan Das ist der einzige Fehler, den ich bekomme. Laut meiner Beschreibung versuche ich 'TestCase.ajaxComp()' aufzurufen - es kommt mit 'undefined' zurück. Wenn ich 'TestCase' aufrufe, listet es alle Objekte auf, die in der' TestCase' gespeichert sind. –

Antwort

0

Dieses happenning wegen dieser Zeile:

se = this.settings; 

Die this im Rahmen Ihrer $(document).ajaxSuccess(...) Methode wird das jQuery-Objekt, nicht Testfall-Objekt sein.

Versuchen Sie es zu se = TestCase.settings; Ändern

+0

zurückgibt, scheint nicht, mit Ihrem Vorschlag zu arbeiten. –

Verwandte Themen