Dart-JS interop: объект JS не загружается при запуске в Dartium

Когда я запускаю код в Chrome (переводится в JS), этот объект можно использовать при загрузке страницы. Проблема возникает, когда я запускаю код в Chromium (собственный Dart + JS), объект не загружается, в этом случае 0 печатается для dateObject ['length'].

date_picker.dart

part of myproject.common.ui;
@Component(
 selector: 'date_picker',
 templateUrl: "date_picker.html",
 useShadowDom: false
)
class DatePickerComponent{
 DatePickerComponent() {
 new Future(() {
 var dateObject = context.callMethod("jQuery", ['#date_picker']);
 print(dateObject['length']);
 var dateChanged = dateObject.callMethod("datetimepicker", [new JsObject.jsify({"format": 'MM/DD/YYYY'})]);
 dateChanged.callMethod('on', ['dp.change']);
 });
 }
}

date_picker.html

<div>
 <div id="date_picker">
 
 <span>
 
 </span>
 </div>
 </div>

Добавление измененного date_picker.dart с использованием ответа из комментариев

part of my_project.common.ui;
@Component(
 selector: 'date_picker',
 templateUrl: "date_picker.html",
 useShadowDom: false
)
@Injectable()
class DatePickerComponent implements ShadowRootAware{
void onShadowRoot(_){
 new Future((){
 var dateObject = context.callMethod("jQuery", ['#date_picker']);
 var dateChanged = dateObject.callMethod("datetimepicker", [new JsObject.jsify({"format": 'MM/DD/YYYY'})]);
 dateChanged.callMethod('on', ['dp.change']);
 });
}
 DatePickerComponent();
}
1 ответ

Предполагая, что вы используете angular1, вы можете реализовать ShadowRootAware и поместить свой код в void onShadowRoot(_) (даже если у вас есть useShadowDom: false этот метод должен быть вызван)

licensed under cc by-sa 3.0 with attribution.