У меня есть источник данных кендо, который загружается на document.ready() и заполняет выпадающий список с результатами запроса JSON. Затем, как только пользователь выбирает элемент в combobox, я скажу, что функция customerSelected() выполняется для загрузки значений для этого клиента. У меня проблема: я не могу установить другой источник данных Kendo для заполнения данных после загрузки страницы. Если я использую обычный JQuery ajax-вызов, данные, как представляется, загружаются после того, как шаблоны Kendo выполняются и не заполняют мои данные.Источник данных Kendo после загрузки страницы
function customerSelected(customerid) {
var customer = customerid;
var commTemplate = kendo.template(' # for (var i=0; i < data.length; i++) { # <div class="communication" contentEditable>#= data[i].fname # - #= data[i].lname # #= data[i].details #</div> # } # ');
var commData = new kendo.data.DataSource({
transport: {
read: {
url: "index.php?mode=showCustomerData",
dataType: "json"
}
}
});
$("#communications").html(commTemplate(commData));
}
$('document').ready(function() {
var customers = new kendo.data.DataSource({
transport: {
read: {
url: "index.php?mode=showCustomers",
dataType: "json"
}
}
});
$("#customerBox").kendoComboBox({
dataSource: customers,
dataTextField: "name",
dataValueField: "customer_id",
filter: "contains",
change: function(e) {
console.log(this.value());
customerSelected(this.value());
$("#customerSelected").val(this.value());
}
});
});
Каждый источник данных здесь возвращает правильные данные JSON, которые я проверил с клиентом покоя. Проблема в том, что kendo.data.DataSource() в функции customerSelected() фактически ничего не делает. Я попробовал различные способы получить эту функциональность, к которой я привык, в чисто JQuery-мире, который делает Ajax-вызовы и добавляет/обновляет DOM. Что мне здесь не хватает, чтобы позволить другому источнику данных после загрузки DOM?
Это было полезно, но не заполняет данные. Я вижу, что DataSource на самом деле делает запрос на сервер сейчас, а вкладка chrome network developer показывает результаты: [{"id": "1", "fname": "Keizer", "lname": "Von", "details" : «ЭТО НЕКОТОРЫЕ ДЕТАЛИ»}], но данные не повторяются на странице. Я смог заставить механизм шаблонов выполнять итерацию данных, когда я пытался с jquery, но поля данных не назначались должным образом. – Keizer
Возможно, мне нужно определить схему? console.log() reports {"options": {"data": [], "schema": {}, "serverSorting": false, "serverPaging": false, "serverFiltering": false, "serverGrouping": false, "serverAggregates": ложь, "партии": ложь, "транспорт": { "чтения": { "URL": "index.php? Mode = showCustomerData", "DATATYPE": "JSON"}}}, "_ карта" : {}, "_ предвыборка": {}, "_ данные": [], "_ pristineData": [], "_ диапазоны": [], "_ вид": [], "_ нетронутый": [], "_ разрушены": [], "_ группа": [], "_ событие": { "синхронизация": [пустая]}, "транспорт": { "опция": { "читать": { "URL": "index.php режим = showCustomerData "," dataType ":" json "}}," cache ": {}}," reader ": {}," _ requestInProgress ": true} – Keizer
Дальше возиться Я смог получить данные для итерации, используя это в смене : function() {$ ("# communication"). html (commTemplate (this._pristine)); } – Keizer