最大调用堆栈大小超过了Kendo Ui

时间:2017-04-07 17:49:54

标签: jquery ajax kendo-ui

在客户选择后我调用了我的jquery函数,我发现自己遇到了这个问题:

kendo.all.js:5282 Uncaught RangeError: Maximum call stack size exceeded
at Function (<anonymous>)
at o.filter (kendo.all.js:5282)
at kendo.all.js:5303
at U (kendo.all.js:4901)
at o.select (kendo.all.js:5243)
at o.group (kendo.all.js:5302)
at Function.o.process (kendo.all.js:5473)
at init._queryProcess (kendo.all.js:6877)
at init._process (kendo.all.js:6867)
at init._change (kendo.all.js:6834)

我发现在使用set()函数的所有行中我得到了这个错误,但当我用(=)更改函数并获取我的网格问题终止时,我不知道c&#39 ;是什么解决方案,我会把你的一部分代码组装起来

function GetplanFormation1() {
    var prj = $("#prj").val();
    $.ajax({
        type: 'GET',`
        url: UrlRoot + 'Formation/readPlanFormation?client=' + cl + "&projet=" + prj,

        success: function (data) {
            for (var i = 0 ; i < data.length; i++) {
                var dataItem = DSThemeFormation.get(data[i].id);
                console.log("data", data);

                if (data[i].PrjAct) {
                    dataItem.checked = true;
                    dataItem.nbj = data[i].j;
                    dataItem.id_org = data[i].org;

                }
                else {
                    dataItem.idP = data[i].idP;
                }
            }
        },
        error: function (xhr) {
            if (prj == undefined) {
            }
            if (cl == undefined) {
            }
        }
    });
}

1 个答案:

答案 0 :(得分:0)

使用dataItem的set()方法将触发Grid数据源实例的change事件,该事件又将重新绑定网格。这就是为什么,为粒度数据项更新大量调用set()对性能不利并导致JavaScript错误。

我建议在success回调中填充独立的普通对象数组,然后通过dataSource的data()方法将整个数组分配为新的Grid数据源。通过这种方式,您将只有一个change事件触发,并且一个Grid重新绑定。