Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не выводятся данные в kendo tree list (https://javascript.ru/forum/jquery/67359-ne-vyvodyatsya-dannye-v-kendo-tree-list.html)

AlexTrader 13.02.2017 09:15

Не выводятся данные в kendo tree list
 
Доброго времени суток, форумчане! Помогите пожалуйста, не получается выявить причину, по которой не выводятся данные в kendo tree list
var treelistDataSource = new kendo.data.TreeListDataSource({
            transport: {
                read: function (e) {
                    var searchTerm = $('#product-search').val();
                    Ajax2.executeAjaxRequest(QueryParameters.GetProductsParams(searchTerm), e);
                },
                update: function (e) {
                },
                destroy: function (e) {
                },
                create: function (e) {
                },

                // Post changed models in the `model` field, as serialized JSON
                parameterMap: function (options, operation) {
                    if (operation !== "read" && options.models) {
                        return { models: kendo.stringify(options.models) };
                    }
                }
            },

            // Enable batch updates
            batch: true,

            // Define the model schema
            schema: {
                model: {
                    id: "id",
                    fields: {
                        id: { type: "number", nullable: false },
                        parentId: { field: "parentId", nullable: true },
                        title: { type: "string", nullable: false }
                    }
                }
            }
        });

       

        TLGoods = $("#goodtreelist").kendoTreeList({
            dataSource: treelistDataSource,
            height: function () {
                return $(window).height() - 120;
            },
            resizable: true,
            groupable: true,
            editable: {
                move: true
            },
            drop: function (e) {
                if (e.valid) {
                    ProductActions.DropCat(e.source.id, e.destination);
                }
            },
            columns: [
                { field: "id", title: "#", width: 60 },
                { field: "parentId", title: "parentId", width: 60 },
                { field: "title", title: "Название", expandable: true },
                {
                    field: "Action",
                    title: "Действия",
                    width: 80,
                    template: "<div class='b-task'>" + "#=ProductActions.TLGoodAdd(data)#" + "#=ProductActions.TLGoodEdit(data)#" + "#=ProductActions.TLGoodDelete(data)#" + "</div>",
                },
            ],
            toolbar: "<div class='b-task'>" + "#=ProductActions.TLGoodButtonCatAdd()#" + "#=ProductActions.TLGoodButtonAdd()#" + "</div>",
        }).data("kendoTreeList");

AlexTrader 13.02.2017 09:17

В консоли браузера вижу
Uncaught RangeError: Maximum call stack size exceeded
    at init._subtree (kendo.all.js:99660)
    at init._subtree (kendo.all.js:99668)
    at init._subtree (kendo.all.js:99668)
    at init._subtree (kendo.all.js:99668)
    at init._subtree (kendo.all.js:99668)
    at init._subtree (kendo.all.js:99668)
    at init._subtree (kendo.all.js:99668)
    at init._subtree (kendo.all.js:99668)
    at init._subtree (kendo.all.js:99668)
    at init._subtree (kendo.all.js:99668)

AlexTrader 13.02.2017 09:19

Вот сам ajax метод:
Ajax2 = {
    executeAjaxRequest: function (data, callback) {
        console.log("Параметры запроса к API " + data.resource + ":");
        console.log(data);
        $.ajax({
            type: "POST",
            url: "/api/proxy",
            dataType: "json",
            contentType: "application/json",
            data: JSON.stringify(data),
            success: function (response) {
                console.log("Ответ от API " + data.resource + ":");
                console.log(response);
                callback.success(response);
            },
            error: function (status) {
                callback = [];
                alert("Ошибка при получении данных при запросе к " + data.resource + ":" + status.responseText);
            }
        });
    },

AlexTrader 13.02.2017 09:23

В консоли вижу, что response получает нужный мне массив (id = 1, parentId =0, title ="Акция 1" и т.д.), но callback не получает эти данные, он пустой объект

AlexTrader 13.02.2017 09:24

Хотя ранее этот метод успешно использовал для kendo grid datasource

AlexTrader 13.02.2017 10:32

У кого нибудь есть опыт работы с kendo treelist?

AlexTrader 13.02.2017 10:33

Возможно я неверно получаю данные с серверной части? Сейчас метод с сервера отдаёт всё сразу, может нужно только по id отдавать?

AlexTrader 13.02.2017 11:48

ParentId верхнего уровня обязательно должен быть null?


Часовой пояс GMT +3, время: 14:05.