Javascript 使用RxJS创建切换按钮
我对反应式编程的概念还很陌生,我只是随便玩玩一下。为了实践我学到的东西,我决定在一个真实的项目中使用RxJS编写一些代码,一切都很顺利 现在我想创建一个简单的切换按钮:Javascript 使用RxJS创建切换按钮,javascript,reactive-programming,togglebutton,rxjs,Javascript,Reactive Programming,Togglebutton,Rxjs,我对反应式编程的概念还很陌生,我只是随便玩玩一下。为了实践我学到的东西,我决定在一个真实的项目中使用RxJS编写一些代码,一切都很顺利 现在我想创建一个简单的切换按钮: let btn = $('button')[0] let clicks = Rx.Observable.fromEvent(btn, 'click') .map(function(clickEvent) { // decide to return true/fal
let btn = $('button')[0]
let clicks = Rx.Observable.fromEvent(btn, 'click')
.map(function(clickEvent) {
// decide to return true/false
})
clicks.subscribe(value => {
// value is true or false
})
如果不在我的流中使用DOM方法,我无法理解这个非常简单的练习。事实上,我只需要流中的最新值,然后将其反转(!!值)
如何实现这一点?您的按钮是否仅通过DOM携带状态?在这种情况下,不查询DOM就无法检索该状态 <>你可以考虑让你的状态退出DOM并在没有DOM函数的情况下操作它。这就是说,您将在某个时候更新DOM状态,但是您可以在observer中进行流外更新 大概是这样的:
var button_initial_state = false; // false for unchecked
var button_state$ = Rx.Observable.fromEvent(btn, 'click')
.scan (function(current_state, event){
return !current_state;
}, button_initial_state)
.startWith(button_initial_state);
button_state$.subscribe (function (state){
// Code to set the button state in the DOM
})
相关文件:
.scan(按钮\u初始状态,函数(当前状态,事件){return!当前状态;})
。问题在于,函数的签名因您使用的Rxjs版本而异。在一种情况下,种子是第一个参数,在另一种情况下,种子是最后一个参数。我不知道RxVision正在使用哪个版本,所以请检查两种可能性工具!他们必须使用rxjs2.x。不管怎样,你都可以接受答案。我写了一篇关于这个的博文:。