0
再次激活觀察到的我有一個開關按鈕和日曆,看起來像 後退訂
正如你可以在圖像上看到,edit
是一個切換按鈕,當它得到了壓制,那麼日曆將可編輯。
編輯切換按鈕被定義爲熱可觀察到:
let oEditOb = this._createEditObservable(this.getById("cal-edit"));
_createEditObservable: function (oEditBtn) {
return Rx.Observable.create(function (subscriber) {
oEditBtn.attachPress(function (oEvent) {
subscriber.next(oEvent);
});
});
},
另外select事件日曆:
let oCalendarSelectOb = this._createCalendarSelectObservable(this.getById("calendar-view"));
_createCalendarSelectObservable: function (oCalendar) {
return Rx.Observable.create(function (subscriber) {
oCalendar.attachSelect(function (oEvent) {
subscriber.next(oEvent);
})
});
},
當得到按下切換按鈕,那麼它會切換到日曆觀察到。爲了澄清考慮下面的代碼片段:
_processCalenderSelect: function (oCalendarSelectOb, oEditButtonOb) {
let self = this;
return oEditButtonOb
.filter(function (oBtn) {
return oBtn.getPressed();
})
.switchMapTo(oCalendarSelectOb)
.mergeMap(function (oCalendar) {
return Rx.Observable.from(oCalendar.getSource().getSelectedDates());
})
.map(function (oDateRange) {
return oDateRange.getStartDate();
});
},
一旦切換到日曆觀察到的,那麼日曆將是永遠的編輯,甚至當我按下切換按鈕禁用edit
模式。
我試圖退訂日曆中選擇觀察到:
oEditPressedOb.subscribe(function (oSource) {
if(!oSource.getPressed()){
oSubscription.unsubscribe();
}
console.log(oSource);
});
但隨後的日曆中選擇將不會再流再次啓用edit
模式之後。
所以,基本上,你需要停下來的時候'oEditOb'點擊第二次從冒落'_processCalenderSelect'日期? –
我該怎麼做才能停止發射? –