Как правильно загружать новый контент в окно kendo?
У меня есть окно кендо, который имеет форму внутри него. Форма имеет входные элементы с данными записи, заполненными внутри нее. Пользователь может закрыть окно и выбрать другую запись для просмотра. Когда пользователь делает это, мне нужно снова показать окно kendo с той же формой, но с другими данными записи. Вот что я сейчас делаю
if (!$("#winContainer").data("kendoWindow")) {
$("#winContainer").kendoWindow({
modal: true,
width: "969px",
height: "646px",
title: "View Record",
content: "record.jsp"
});
} else {
$("#winContainer").data("kendoWindow").refresh({url: 'record.jsp'});
}
$("#winContainer").data("kendoWindow").center().open();
форма содержится в записи.jsp, и я заполняю его данными JSON, которые я ранее получил от сервера (через JavaScript упоминается в записи.JSP-страница.) Мне нужно убедиться, что окно не отображается, пока новые данные записи не будут заполнены в форме. Это правильный способ сделать это или есть способ лучше?
1 ответов
вместо того, чтобы каждый раз создавать новое окно или обновлять его содержимое, я рекомендую:
- Создать окно,
- каждый пользователь выбирает новую запись, привязать новые данные к окну и откройте его.
таким образом, вам нужно только загрузить страницу один раз.
вы также можете рассмотреть вопрос о наличии страницы record.jsp
определено в качестве шаблона кендо UI в ваш оригинальный страница.
пример:
учитывая следующие выбираемые пользователем записи:
var data = [
{ text1: "text1.1", text2: "text1.2" },
{ text1: "text2.1", text2: "text2.2" },
{ text1: "text3.1", text2: "text3.2" },
{ text1: "text4.1", text2: "text4.2" }
];
и форма, определенная как шаблон со следующим HTML:
<script id="record-jsp" type="text/x-kendo-template">
<div>
<p>This is your form with some sample data</p>
<label>text1: <input type="text" data-bind="value: text1"></label>
<label>text2: <input type="text" data-bind="value: text2"></label>
</div>
</script>
наш JavaScript будет чем-то вроде:
// Window initialization
var kendoWindow = $("<div id='window'/>").kendoWindow({
title : "Record",
resizable: false,
modal : true,
viewable : false,
content : {
template: $("#record-jsp").html()
}
}).data("kendoWindow");
привязать данные к окну и открыть его:
function openForm(record) {
kendo.bind(kendoWindow.element, record);
kendoWindow.open().center();
}
и, наконец, вызов функции с данными.
openForm(data[0]);
вы можете видеть, как он работает на этом JSFiddle
Примечание: если вы все еще предпочитаете использовать внешнюю страницу, просто нужно изменить template: $("#record-jsp").html()
by:url: "record.jsp"