Модальное диалоговое окно блокировки в Javascript - PullRequest
3 голосов
/ 22 сентября 2011

Я разрабатываю панель инструментов Openlayers в Javascript с помощью jQuery и jQuery UI.

Одна из функций, которую я хочу реализовать, - это добавление точек на карту.

В openLayers вы должны слушатьсобытие с именем 'sketchcomplete'.

layer.events.on({
    'sketchcomplete': onPointAdded
});

Проблема в обратном вызове onPointAdded.Этот обратный вызов должен возвращать true или false.Значение True означает, что точка должна быть добавлена ​​на карту, а значение false означает отмену добавления этой точки на карту.

Теперь функция обратного вызова выглядит следующим образом:

onPointAdded = function(feature) {
  var f = feature.feature;
  var result = false;
  $('#dialog-point-add').dialog({
    modal : true,
    buttons : {
      'Add point' : function() {
        result = true;
        $(this).dialog("close");
      },
      'Cancel' : function() {
        result = false;
        $(this).dialog("close");
      }
    }
  });
  return result;
};

Проблема заключается в том, что этот диалогне блокирует исполняемый кодЯ спрашиваю вас, как справиться с этой ситуацией?Я хочу показать пользователю диалог с подтверждением добавления точки.

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Если я правильно понимаю вопрос, вы не сможете сделать это с помощью диалогового окна jquery ui. Ваниль JS подтвердить окно должно работать, хотя.

0 голосов
/ 22 сентября 2011

Функция не может блокироваться, поскольку JavaScript является однопоточным и больше ничего не может быть выполнено. Почему бы вам просто не добавить логику, которую вы хотите вызвать, если функция возвращает true, к обратному вызову «Добавить точку»?

EDIT: "нормальный" диалог подтверждения JavaScript будет блокировать:

onPointAdded = function(feature) {
  return confirm("Sure?");
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...