我正在使用以下功能,其功能是将扩展状态恢复到剑道网格。如您所见,该函数可以调用多次。在外部块中填充变量,在这种情况下为“扩展”,然后由匿名函数使用该变量,该匿名函数分配给在其中使用的事件。
多次调用此函数时,变量“ 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);
});
}
答案 0 :(得分:1)
每次saveExpansions()
的调用都会有自己的expand实例。
您可以了解有关函数闭包here
的更多信息答案 1 :(得分:0)
如前一个答案所述,扩展变量是仅在函数内部存在的局部变量。因此,对saveExpansions()
的每次调用都会有自己的“扩展”。