События с переменной из внешнего блока - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю над следующей функцией, задачей которой является восстановление состояния расширения в сетку кендо.Как видите, функцию можно вызывать много раз.Переменная заполняется, в данном случае «расширенной», во внешнем блоке, который затем используется анонимной функцией, которая назначается событию, которое используется внутри.

Когда эта функция вызывается несколько раз, будет ли переменная «расширенная» перезаписываться каждый раз, когда все экземпляры анонимной функции будут использовать последнее значение, присвоенное «расширенной»?Или выполнение 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 голосов
/ 12 февраля 2019

Как указывалось в предыдущем ответе, расширенная переменная является локальной переменной, которая будет жить только внутри функции.Таким образом, каждый вызов saveExpansions() будет иметь свой собственный «расширенный».

0 голосов
/ 12 февраля 2019

Каждый вызов saveExpansions() будет иметь свой собственный экземпляр раскрытия.

Подробнее о замыканиях функций здесь

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...