问题描述
我正在使用以下功能,其功能是将扩展状态恢复为剑道网格。 如您所见,该函数可以调用多次。 在外部块中填充变量,在这种情况下为“扩展”,然后由匿名函数使用该变量,该匿名函数分配给在其中使用的事件。
多次调用此函数时,变量“ expanded”是否每次都会被覆盖,从而导致匿名函数的所有实例都使用赋予“ expanded”的最后一个值? 还是'saveExpansion'运行保留了自己的实例?
function saveExpansions(gridname) {
var grid = $("#"+gridname).data("kendoGrid");
var expanded = $.map(grid.tbody.children(":has(> .k-hierarchy-cell .k-i-collapse)"), function (row) {
return $(row).data("uid");
});
// Re-expand (might need to switch to a better event rather than waiting)
grid.one("dataBound", function () {
rowsToExpand = grid.tbody.children().filter(function (idx, row) {
return $.inArray($(row).data("uid"), expanded) >= 0;
});
grid.expandRow(rowsToExpand);
});
}
1楼
saveExpansions()每次调用都会有自己的saveExpansions()实例。
您可以了解有关函数闭包的更多信息