gpt4 book ai didi

RxJS 观察一个对象

转载 作者:行者123 更新时间:2023-12-03 16:42:10 25 4
gpt4 key购买 nike

我是 RxJS 的新手,所以我为新手问题道歉。

我有一个本地 javascript 对象定义为:

model.user = {
firstName: 'John',
lastName: 'Smith'
}


我将每个属性绑定(bind)到一个输入控件,用户可以在其中更改值。我希望能够观察这个对象并在任何属性的值发生变化时捕获事件。

这可以通过 RxJS 实现吗?

谢谢。

最佳答案

您可以将整个状态存储为 Observable,而不是使用对象。

这是示例代码(类似于人们在 redux 中所做的事情):

var fnameInput = document.getElementById('fname');
var lnameInput = document.getElementById('lname');
var jsonPre = document.getElementById('json');

var onFirstName$ = Rx.Observable.fromEvent(fnameInput, 'input');
var onLastName$ = Rx.Observable.fromEvent(lnameInput, 'input');

var initialState = {
firstName: '',
lastName: '',
};

var state$ = Rx.Observable
.merge(
onFirstName$
.map(e =>
state => Object.assign(
state,
{ firstName: e.target.value }
)
),
onLastName$
.map(e =>
state => Object.assign(
state,
{ lastName: e.target.value }
)
)
)
.scan(
(state, makeNew) => makeNew(state),
initialState
)
.startWith(initialState);

state$
.subscribe(state => {
jsonPre.innerHTML = JSON.stringify(state, null, 2);
});
<input id="fname" type="text">
<input id="lname" type="text">
<pre id="json"></pre>

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.0.6/rx.all.js"></script>

关于RxJS 观察一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com