#javascript #jquery #callback #prototype-programming
#javascript #jquery #обратный вызов #прототип-программирование
Вопрос:
Я видел этот потрясающий пост Джона Ресига о «Создании экземпляра простого класса»: http://ejohn.org/blog/simple-class-instantiation /
Итак, я начал создавать скрипты таким образом, но, к сожалению, это вызвало некоторые проблемы и путаницу.
Я работаю над своего рода «пользовательской диалоговой платформой», где одновременно должно быть возможно просматривать только одно диалоговое окно, и если вы отклоняете одно, появляется следующее. Давайте назовем это очередью диалога.
Во-вторых, он должен выполнить продолжить или отменить в зависимости от того, что выберет пользователь. Итак, мы могли бы использовать его следующим образом:
var dialog = UIDialog();
dialog.proceed(function() {
// Do stuff
});
dialog.cancel(function() {
// Do stuff
});
В настоящее время у меня есть этот код:http://pastebin.com/sGyjArfA
Прямо сейчас очередь диалоговых окон, кажется, работает, но я совершенно не понимаю, как мне заставить обратный вызов работать.
Комментарии:
1. Штука с обратным вызовом … вы можете быть более конкретными? Требуется ли обратный вызов при выполнении proceed и при выполнении cancel?
Ответ №1:
Вам нужно сохранить обратные вызовы в объекте dialog, а затем просто вызывать их в подходящее время. Например.,
UIDialog.prototype.proceed = function(callback) { this.cbProceed = callback; }
И затем в логике диалога, которая обрабатывает логику продолжения, просто вызовите обратный вызов, если он установлен:
if (this.cbProceed amp;amp; jQuery.isFunction(this.cbProceed))
this.cbProceed();