Программно имитировать click() в Div

Я пытаюсь запустить событие программно. Моя проблема в том, что у меня есть два SVG на двух DIV, и я хочу иметь возможность изменить границу DIV, на которую я нажал. Для этого я подумал передать DIV внутри своих классов, а затем вызвать щелчок по нему, как только я нажму на что-нибудь. (если есть лучший способ, пожалуйста, скажите мне)

У меня есть следующий код:

div = querySelector(divName);
svgElement = new svg.SvgSvgElement();
div.append(svgElement);
div.onClick.listen(_setBorders(1));

позже я передаю svgElement другому классу

ell.show(svgElement);

где шоу

show(svg.SvgElement element) {
  if (element.parent is DivElement){
    _parentDiv= element.parent as DivElement;
    element.children.add(_group);  
  }
}

_parentDiv — это, конечно, DivElement, который я использую для внутреннего onClick().

_onClick(MouseEvent e) {
  window.console.info("onClick Ell");
  _parentDiv.click();
}

Я ожидаю увидеть _setBorders(1); Я определил с основным div, но это не работает. Странно то, что когда я проверяю отладчик, установленный на _parentDiv.click(), я вижу, что _parentDiv правильно установил событие. Я полагаю, что click() работает не так, как я ожидал. Есть идеи?


person maugch    schedule 04.02.2014    source источник
comment
Разве ты не хочешь div.onClick.listen((_) => _setBorders(1)); ? Если нет, не могли бы вы вставить метод _setBorders?   -  person Alexandre Ardhuin    schedule 05.02.2014
comment
@Alexandre Возможно, я сделал ошибку при копировании, но я подумал, что то, что я здесь написал, не должно было работать. В чем разница?   -  person maugch    schedule 05.02.2014
comment
listen принимает функцию в качестве параметра. Вы не вставляете содержимое своей функции _setBorders, но я ожидаю от ее имени, что вызов _setBorders(1) возвращает не функцию, а скорее void или null или nothing. Если вы хотите, чтобы _setBorders(1) вызывалось по событиям щелчка, вы должны использовать div.onClick.listen((_) => _setBorders(1)).   -  person Alexandre Ardhuin    schedule 05.02.2014
comment
Почему неправильная версия не дает исключения?   -  person maugch    schedule 05.02.2014


Ответы (1)


Если вы хотите, чтобы _setBorders(1) вызывался в событиях кликов, вы должны использовать:

div.onClick.listen((_) => _setBorders(1));
person Alexandre Ardhuin    schedule 05.02.2014
comment
Спасибо. Я действительно забыл первую часть. Интересно, почему я не получил предупреждение. - person maugch; 05.02.2014