Закрытие окна кэндуи с помощью пользовательской кнопки Закрыть в окне
Я использую компонент окна Kendo UI, который похож на любой модальный диалог.
У меня есть кнопка закрытия, как закрыть окно после нажатия этой кнопки (вместо нажатия кнопки "x" по умолчанию в строке заголовка)
Содержимое в моем окне загружается из другого представления
@(Html.Kendo().Window()
.Name("window")
.Title("Role")
.Content("loading...")
.LoadContentFrom("Create", "RolesPermissions", Model.Role)
.Modal(true)
.Width(550)
.Height(300)
.Draggable()
.Visible(false)
)
С той же точки зрения, у меня есть
<span id="close" class="btn btn-inverse">Cancel</span>
Это то, что у меня есть в моем главном виде (вид, вызывающий окно)
$(document).ready(function () {
var window = $("#window").data("kendoWindow");
$("#open").click(function (e) {
window.center();
window.open();
});
$("#close").click(function(e) {
window.close();
});
});
4 ответа
По сути, вы уже знаете, как закрыть окно - вам нужно сделать это с помощью метода close его API.
$("#window").data("kendoWindow").close();
Но для того, чтобы прикрепить обработчик к кнопке внутри представления, вам нужно дождаться загрузки содержимого - вам нужно использовать событие refresh.
например
$('#theWindowId').data().kendoWindow.bind('refresh',function(e){
var win = this;
$('#close').click(function(){
win.close();
})
})
В JavaScript - HTML window
это объект, который представляет открытое окно в браузере. Попробуйте определить ваш window
как-то еще.
$(document).ready(function () {
var wnd = $("#window").data("kendoWindow");
$("#open").click(function (e) {
wnd.center();
wnd.open();
});
$("#close").click(function(e) {
wnd.close();
});
});
В случае работы с контентом, загруженным ajax, ответ Петура Субева идеален! Я хотел бы привести пример работы с шаблонами, который более прост (тогда как не все запросы должны выполняться ajax). Рассмотрим шаблон ниже:
<script id="Template_Example1" type="text/kendo-tmpl">
<div class="i-contentWindow">
<div>
<a id="btn1" href="\#"><span class="k-icon k-i-cancel"></span>Button 1</a>
</div>
</div>
А теперь давайте загрузим шаблон и вызовем метод закрытия окна:
function ExampleFn1(dataItem) {
//create the template
var template = kendo.template($("#Template_Example1").html());
//create a kendo window to load content
var kWindow = openKendoWindow({
title: "Window Tests",
iframe: false,
resizable: false
}).content(template(dataItem));
// call window close from button inside template
$("#btn1").click(function (e) {
e.preventDefault();
alert("btn1 on click!");
});
kWindow.open();
}
В кендо ui есть событие для этого должно быть что-то вроде этого
$("#idofyourbutton").click(function () {
$("#window").data("kendoWindow").close();
});