当前位置: 代码迷 >> JavaScript >> 来自外部块的变量事件
  详细解决方案

来自外部块的变量事件

热度:42   发布时间:2023-06-12 14:10:04.0

我正在使用以下功能,其功能是将扩展状态恢复为剑道网格。 如您所见,该函数可以调用多次。 在外部块中填充变量,在这种情况下为“扩展”,然后由匿名函数使用该变量,该匿名函数分配给在其中使用的事件。

多次调用此函数时,变量“ 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);
  });
}

saveExpansions()每次调用都会有自己的saveExpansions()实例。

您可以了解有关函数闭包的更多信息

  相关解决方案