【发布时间】:2016-12-22 09:23:57
【问题描述】:
我在我的代码中使用 Subject 并想知道是否建议以这种方式进行。
首先,对于我使用的主题,当切换按钮被按下时,其他按钮将被设置为非活动状态。
主题定义和订阅者实现代码:
let oButtonSubject = new Rx.Subject();
this._subscribeButtonState(oButtonSubject);
_subscribeButtonState: function (oButtonSubject) {
let self = this;
return oButtonSubject
.subscribe(function (oBtnState) {
let oModel = self.getModel("vmButtonsState");
oModel.setProperty("/edit", oBtnState.bEdit);
oModel.setProperty("/mass", oBtnState.bMass);
oModel.setProperty("/save", oBtnState.bSave);
oModel.setProperty("/cancel", oBtnState.bCancel);
});
},
上面的代码将设置按钮的状态。
每次按下edit时,都会调用next方法并将数据推送到oButtonSubject。
_subscribeEditPressOb: function (oEditPressed, oButtonSubject) {
let self = this;
return oEditPressed
.map(function (oSource) {
return oSource;
})
.subscribe(function (oSource) {
// Determine select state for the calendar.
// The calendar is only allowed to select, if
// EDIT button is clicked.
if (oSource.getId().indexOf("cal-edit") >= 0 && oSource.getPressed()) {
oButtonSubject.next({bEdit: true, bMass: false, bSave: false, bCancel: false});
} else {
oButtonSubject.next({bEdit: true, bMass: true, bSave: true, bCancel: true});
}
},
function (err) {
jQuery.sap.log.fatal(err);
});
},
上面的代码在按下edit按钮时订阅,在推送数据到主题之后。
主题的使用方法正确吗?
【问题讨论】:
标签: javascript rxjs reactive-programming rxjs5