То, как Вы сносите додзе, соединило событие, если у Вас нет “дескриптора”, который был возвращен во время dojo.connect?

Если Вам установили Python или не возражаете устанавливать его (он имеет другое использование также:), просто создайте следующий сценарий sleep.py и добавьте его где-нибудь в Вашем ПУТИ:

import time, sys

time.sleep(float(sys.argv[1]))

Это позволит подвторые паузы (например, 1,5 секунды, 0.1, и т.д.), должны Вы иметь такую потребность. Если Вы хотите назвать его как sleep, а не sleep.py, то можно добавить .PY расширение переменной среды PATHEXT. На Windows  XP, можно отредактировать его в:

Мой Компьютер в †’ Свойства (меню) в †’ Усовершенствованный (вкладка) в †’ Переменные среды (кнопка) в †’ Системные переменные (кадр)

ОБНОВЛЕНИЕ: Эти timeout команда, доступная от Windows Vista и вперед, должна быть используемая команда, как описано в другом ответ к этому quiestion.

13
задан John 11 August 2011 в 20:28
поделиться

2 ответа

Обычно я сохраняю дескрипторы при их создании, чтобы потом их можно было отключить. Примерно так:

 var connects = {};

 // then later on
 var node = dojo.create(....); // or someting else that gives you a node
 dojo.forEach( ['click','ondblclick' ], function( evt, idx ) {
   if (!connects[node.id]) {
     connects[node.id] = [];
   }
   connects[ node.id ][idx] = dojo.connect( node, evt, function(evt) { .... });
 });

Затем, позже, вы можете отключиться, например:

 dojo.forEach( connects[node.id], function( handle ) {
   dojo.disconnect( handle );
 });

Для этого есть аналогичный образец кода на dojocampus

8
ответ дан 1 December 2019 в 20:43
поделиться

Как и Сет, у меня есть свои шаблоны для удаления событий - я собираю дескрипторы в массивы (псевдокод):

var handles = [
  dojo.connect(...),
  dojo.connect(...),
  dojo.connect(...)
];

Если я подключаюсь динамически, я просто собираю их:

var handles = [];
...
handles.push(dojo.connect(...));
...
handles.push(dojo.connect(...));

Если я подключаю несколько события обычно я могу использовать dojo.map () :

var handles = dojo.map(["click", "ondblclick"], function(evt){
  return dojo.connect(node, evt, ...);
});

Замечательно то, что позже я могу отключить их все с помощью удобного однострочника:

dojo.forEach(handles, dojo.disconnect);

В вашем случае вы можете использовать словарь, подобный показанному Сетом, выполняет то же самое:

var handles = {};
...
handles[node.id] = dojo.map(["click", "ondblclick"], function(evt){
  return dojo.connect(node, evt, ...);
});

Итак, позже вы можете отключить обработчики следующим образом:

dojo.forEach(handles[node.id], dojo.disconnect);

Посмотрите, помогут ли Сет и мои наброски в вашем случае. Если нет, расскажите подробнее.

9
ответ дан 1 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: