Попробуйте, это работает для меня в вашем KendoSandbox;
var popupWindow, dfd;
function showtWindow(){
var selected = [];
var post = false;
dfd = new jQuery.Deferred();
var promise = dfd.promise();
popupWindow = $("#popupWindow").data('kendoWindow');
//init window only first time
if (popupWindow === undefined) { // removed the if undefined clause
popupWindow = $("#popupWindow").kendoWindow({
title: 'Test',
width: 400,
height: 600,
modal: true,
close: function () {
if (post) {
dfd.resolve(selected);
}
// this.destroy();
}
}).data('kendoWindow');
popupWindow.wrapper.find('.confirm').on('click', function (e) {
selected = popupWindow.wrapper.find('.list input:checked').map(function (i, el) {
return $(el).val();
}).get();
post = true;
popupWindow.close();
});
popupWindow.wrapper.find('.cancel').on('click', function (e) {
popupWindow.close();
});
} // removed the if undefined clause
popupWindow.center().open();
return promise;
}
Надеюсь, это поможет, я просто перезаписываю всплывающее окно и связанное с ним обещание, по нажатию кнопки, такое, что обещание (брошено)может быть захвачен с каждым нажатием кнопки.