Aurelia观察动态对象数组

时间:2016-10-28 15:30:18

标签: aurelia

我有一个数组,里面有一些对象。

this.mediaService.media.files = [
  { id: 1, progress: 15 },
  { id: 2, progress: 0 }
]

在上传文件时,进度会在包含.files的外部js单例类中发生变化。我需要订阅此数组以及数组中每个文件的进度属性。这个数组是动态的,所以在添加文件时我需要能够知道并订阅它们。

以下是我在aurelia的所作所为:

  bind() {
    this.observerLocator
      .getArrayObserver(this.mediaApi.media.files)
      .subscribe(this.addSplicesObservations);
  }

  addSplicesObservations(splices) {
    for (let i = 0; i < splices.length; i++) {
      this.subscriptions.push(this.observerLocator
        .getObserver(this.mediaApi.media.files[splices[i].index], 'progress')
        .subscribe(this.onChange)
      );
    }
  }

我注意到我无法访问this内的addSplicesObservations()。在aurelia中这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

我了解到,如果你这样做,this将被保留。

bind() {
    this.observerLocator
      .getArrayObserver(this.mediaApi.media.files)
      .subscribe((splices) => {
        this.addSplicesObservations(splices); });
}

请注意,订阅设置略有不同。现在为什么这会使它与众不同我不确定。