Звонит Дж. От Дарт - PullRequest
0 голосов
/ 21 мая 2018

Как мне вызвать код вызова, подобный этому, из Dart?

$('.datepicker').datepicker();

Я знаю, что могу вызывать функции с помощью пакета "package: js / js.dart", например,

@JS("Plotly.plot")
external plot(DivElement element, List<PlotData> plotData, Margin margin);

... но вызов функции для элемента?

1 Ответ

0 голосов
/ 22 мая 2018

Не совсем понятно, о чем вы спрашиваете, но я думаю, вы спрашиваете, как вызывать произвольные методы для объекта JS.Это не очень легко сделать (лучше писать типизированные интерфейсы).У вас есть два варианта:

  1. Использовать package:js/js_util.dart и вызывать callMethod.
  2. Написать @JS() -аннотированный class за то, что вы хотите.

Для первого вы можете написать следующее:

import 'package:js/js_util.dart' as js;

void openDatePicker(Object elements) {
  js.callMethod(elements, 'datepicker', []);
}

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

Для последнего вы все равно можете использовать @JS()техника.Например:

@JS()
external JQueryElements $(String selector);

@JS()
// Because this doesn't "really" align to a class in the JS/DOM.
@anonymous
abstract class JQueryElements {
  @JS()
  external void datepicker();
}

... и вы можете использовать его так:

void main() {
  $('.datepicker').datepicker();
}
...