dart - 如何将 FileList 绑定(bind)到 Dart Polymer 中的 Observable?

标签 dart polymer dart-polymer

我正在尝试将文件上传与 Dart & Polymer 结合使用。考虑以下文件:

我的上传.html

<polymer-element name="my-upload">
  <template>
    <style></style>
    <input type="file" id="uploader" bind-files="{{files}}" on-change="{{uploadFiles}}" multiple>
  </template>
  <script type="application/dart" src="my-upload.dart"></script>
</polymer-element>

我的上传.dart

@CustomTag('my-upload')
class MyUpload extends PolymerElement {        
  @observable FileList files;

  MyUpload.created() : super.created();

  void uploadFiles(event, details, target) {        
    print(files);
  }
}

uploadFiles 中的打印语句始终打印 null。看来,fileList 没有绑定(bind)到可观察对象。有没有办法解决这个问题?我必须使用绑定(bind)文件以外的其他语句吗?

当然,有一种解决方法,但我认为它没有捕获重点:

我的上传.dart

@CustomTag('my-upload')
class MyUpload extends PolymerElement {  
  FileUploadInputElement uploader;

  MyUpload.created() : super.created() {
    uploader = $['uploader'];    
  }

  void uploadFiles(event, details, target) {        
    print(uploader.files);
  }
}

有任何想法吗?

最佳答案

FileList是不可观察的。
@observable注释,您只能观察文件是否已更改,以便它指向不同的 FileList,但不能指向 FileList 内的更改。

在您的示例中,我看不出一个令人信服的理由,为什么您需要一个可观察的 FileList。
你想用它做比我们从示例中看到的更多的事情吗?

你可以简化你的代码。我不知道这在您的用例中是否有意义:

@CustomTag('my-upload')
class MyUpload extends PolymerElement {  

  void uploadFiles(event, details, target) {        
    FileUploadInputElement uploader = $['uploader'];   
    print(uploader.files);
  }
}

甚至更短

@CustomTag('my-upload')
class MyUpload extends PolymerElement {  

  void uploadFiles(event, details, target) {        
    print($['uploader'].files);
  }
}

关于dart - 如何将 FileList 绑定(bind)到 Dart Polymer 中的 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20289662/

相关文章:

dart - 在 Polymer 中绑定(bind)可观察 setter/getter 的位置

firebase - 如何将 Firestore 中的 map 数组转换为 map Dart 列表

flutter - 'TextStyle ?' can' t 被分配给参数类型 'TextStyle'

drop-down-menu - polymer 1.0 : How can I get the value of the selected item in a paper-dropdown-menu?

javascript - 在 Polymer 1.1 中使用 window.location.href 的正确方法

dart - 模糊处理程序仅在备用事件上触发

dart - 如何将包含 url 的文本绑定(bind)为 html

flutter - 将类转换/转换为父类类型

dart - Dart使用或不使用抽象关键字之间有何区别?

javascript - 可以看到元素的宽度,但仍然为 0