我有一个数组,里面有一些对象。
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中这样做的正确方法是什么?
答案 0 :(得分:2)
我了解到,如果你这样做,this
将被保留。
bind() {
this.observerLocator
.getArrayObserver(this.mediaApi.media.files)
.subscribe((splices) => {
this.addSplicesObservations(splices); });
}
请注意,订阅设置略有不同。现在为什么这会使它与众不同我不确定。