Использование https://pub.dartlang.org/packages/js интерфейс класса Js таким образом, работает отлично:JS пакет - интерфейс объекта
@JS()
class ObjJS {
external ObjJS();
external String fullName();
}
Теперь я хочу, чтобы выставить метод в другом классе, так что плата за проезд я только решил эту проблему с дублирование метода. Это работает, но будет расти, когда будет добавлено больше методов. Нужен какой-то миксин или наследование, но не принято для этого класса interop. jselem
это имя библиотеки
class ObjDart {
jselem.ObjJS _objJS = new jselem.ObjJS();
String fullName(){
return _objJS.fullName();
}
}
Есть более элегантные способы решить эту проблему?
Обновление для лучшей иллюстрации
вещей работает, вопрос касается, есть ли более эффективные способы разоблачить методы/свойства сопряженного класса Javascript. Приведенный выше пример является минимальным, поэтому не является иллюстративным. Чтобы получить лучшую иллюстрацию, возьмите ChartDataSet
отсюда: https://github.com/google/chartjs.dart/blob/master/lib/chartjs.dart Просто для иллюстрации, скажем так, на стороне Дарта создан класс Дарта StreamChartDataSet
, который добавляет функции для чтения онлайн-данных с URL-адреса. Поскольку StreamChartDataSet
не могут наследовать или подмешать от ChartDataSet
раствора выше, дает:
class StreamChartDataSet {
ChartDataSet _chartDataSet;
...
String get label => _chartDataSet.label;
set label(fial String v) => _chartDataSet.label(v);
...
}
Это много методов и чисто механическую работу. Когда закончите с этим, просто надеюсь, что ChartSettings
идет без изменений :-) Я работаю с другими вещами, но используя Charjs.dart для иллюстрации.
Я не понимаю, в чем проблема. –
Привет, Прежде всего, ссылка в вопросе была неправильной, теперь исправлена. Это касается пакета js 0.6, а не дротика: js. Минимальный пример не был иллюстративным, поэтому я попробовал один, который, мы надеемся, более наглядный. –