我试图了解kendo-ui中的编辑服务示例(link),以了解调度程序(在beta中)的角度。 EditService类扩展了BaseEditService。
我的代码中editService的read()函数如下:
public read(): void {
if (this.data.length) {
this.source.next(this.data);
return;
}
this.fetch().subscribe(data => {
this.data = data.map(item => this.readEvent(item));
this.source.next(this.data);
},null, null
);
}
我不明白 this.source.next(this.data)的作用。
根据base-edit.service.d.ts:
/**
* The source subject for the `events` observable.
*/
protected source: BehaviorSubject<TEvent[]>;
深入研究BehaviorSubject(来自RxJS)揭示了一条评论
* A variant of Subject that requires an initial value and emits its current
* value whenever it is subscribed to.
我开始认为需要将this.data馈送到this.source.next()中,其原因不是像下面这样在一行中完成
this.source.next(data.map(item => this.readEvent(item)));
是因为当数据已经存在时,if语句需要它。