Обработка bootstrap4 модалов в дартс - PullRequest
0 голосов
/ 12 сентября 2018

Мне нужно вызвать модальности начальной загрузки из кода Dart, и вот что я пробовал (используя библиотеку js):

@JS('jQuery')
class jQuery {

  @JS()
  jQuery(obj);

  @JS('modal')
  external dynamic modal(func);
}

class Modal extends jQuery {

  Modal(obj) : super(obj);

  dynamic toggle() => super.modal('toggle');
  dynamic show() => super.modal('show');
  dynamic hide() => super.modal('hide');
  dynamic handleUpdate() => super.modal('handleUpdate');
  dynamic dispose() => super.modal('dispose');

}

в этом коде, если я использую класс jQuery напрямую, я не получаю никаких проблем (jQuery.modal('show')), но если я использую Modal методы, т. Е .:

Modal modal = Modal('#myModal');
modal.toggle();

Я получу TypeError: Cannot read property 'call' of undefined (NullError).

javascript код jQuery('#myModal').modal(func)

Моя вторая проблема заключается в том, как перехватить пользовательское событие, например: show.bs.modal в jQuery, я бы использовал .on(...), но в Dart я понятия не имею, я использовал element.addEventListener('show.bs.modal', onModalShown), но это не срабатывает, и я не получите никаких ошибок.

1 Ответ

0 голосов
/ 12 сентября 2018

вы определили класс jquery, но вам нужно получить его из окна, и вам также нужно определить модальное состояние с помощью аннотации @JS, я не думаю, что вы можете расширить класс jQuery

Я бысделано так

@JS('\$')
external dynamic jQuery(query);

@JS()
@anonymous
class ModalElement {
  external modal(String call);
  external on(String event, Function callback);
  ...
}

final modal = jQuery('#myModal') as ModalElement;
modal.modal('toggle');

modal.on('event', allowInterop((event) {}));
...