2013-09-17 6 views
0

Здравствуйте, я это код, который работает отличноJavascript обратного вызова не стреляя при использовании этого

var app = { 

    callback: null, 
    jqmReady: null, 
    pgReady: null, 

    // Application Constructor 
    initialize: function(callback) { 
     this.callback = callback; 
     this.jqmReady = $.Deferred(); 
     this.pgReady = $.Deferred(); 
     this.bindEvents(); 
    }, 

    bindEvents: function() { 
     document.addEventListener('deviceready', app.pgReady.resolve, false); 
     $(document).on("pageinit", app.jqmReady.resolve); 
     $.when(app.jqmReady, app.pgReady).then(app.isReady); 
    }, 

    isReady: function() { 
     app.callback(); 
    } 

}; 

код инициализации, как это:

app.initialize(function(){ 
     navigator.notification.alert('Hello there!', function(){}, 'Notify', 'Ok'); 
    }); 

однако моя isReady функция была, как это в первый и обратный вызов не был вызван:

isReady: function() { 
     this.callback(); 
    } 

Почему это происходит? не входит в объем this = app внутри isReady() как в функции initialize()? Может кто-нибудь объяснить мне, почему он не работает с this.callback()?

ответ

1

Вы создали объект, а не класс или экземпляр класса. Измените this на app на протяжении всей функции инициализации. Вы делаете это уже в своих функциях isReady и bindEvents. Поэтому держите это в initialize.

+0

Я вижу, спасибо за разъяснение, я был немного смущен, потому что я использую при создании классов и примеров, как вы упомянули – Syd

Смежные вопросы