У меня есть кнопка переключения и календарь, который выглядит как Активировать наблюдаемой снова после отказа от подписки
Как вы можете видеть на изображении, 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);
});
});
},
Также выберите событие в календаре:
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
снова.
Так, в принципе, вам нужно остановить непосредственно излучающих даты от '' _processCalenderSelect' когда oEditOb' нажата второй раз? –
Как я могу это сделать, чтобы прекратить излучать? –