对包裹的js

时间:2016-06-29 15:12:52

标签: javascript dart angular-dart

我通过dart:js包装了exif-js库。

  @JS()
    library exif;

    import 'package:js/js.dart';

    @JS()
    external PhotoDetails get EXIF;

    @JS()
    class PhotoDetails {
      factory PhotoDetails() {
        return EXIF;
      }

      @JS()
      external bool getData(img, callback);
}

并有一个小飞镖计划:

PhotoDetails photoDetails = new PhotoDetails();
    var fileUploadInputElement = new FileUploadInputElement();
    fileUploadInputElement.onChange.listen((e) => photoDetails.getData(
        fileUploadInputElement.files[0], () {
      print(this);
    }));

Here它已经回答了,但是当我这样做时,我有这个js错误:exif.js:351 Uncaught TypeError: callback.call is not a function 我试图手动转换为Function。但它没有帮助。使用lambda表达式是一样的。

1 个答案:

答案 0 :(得分:1)

我认为您需要allowInteropallowInteropCaptureThis

PhotoDetails photoDetails = new PhotoDetails();
var fileUploadInputElement = new FileUploadInputElement();
fileUploadInputElement.onChange.listen((e) => photoDetails.getData(
    fileUploadInputElement.files[0], allowInteropCaptureThis((self, [_]) {
  print(self);
})));