来自外部块的变量事件

时间:2019-02-12 20:22:17

标签: javascript kendo-ui

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

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

2 个答案:

答案 0 :(得分:1)

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

您可以了解有关函数闭包here

的更多信息

答案 1 :(得分:0)

如前一个答案所述,扩展变量是仅在函数内部存在的局部变量。因此,对saveExpansions()的每次调用都会有自己的“扩展”。

相关问题