我想知道使用单个observable跟踪多个输入字段是否有任何负面原因。我这样做的唯一问题是我无法真正使用distinctUntilChanged
,因为有些情况下文本可能会重叠,这意味着它不会触发
我的单个可观察的例子:
this.subscription = Rx.Observable.fromEvent($(joined), 'keyup')
.pluck('target')
.flatMap(target=>
Rx.Observable.of(target.value)
.filter( (text) => {
text = text.trim();
if (!text.length) // empty input field
{
this.setState({
list: {
company: [],
country: [],
state: [],
suburb: [],
street: []
}
});
}
return text.length > 0;
})
.map(response => ({
id: target.id.replace("_input", ""),
term: target.value
}))
)
.debounceTime(200)
.switchMap(r => this.search_type(r.term, r.id))
.subscribe(
/* some code */
)
如果我只是坚持一个可观察的,或者我是否应该有一个可观察的每个输入,那会没用吗?
答案 0 :(得分:0)
在我看来,这取决于具体情况。 假设我们有两个输入firstName,lastName。我希望能够在任何字段中进行搜索,因此如果您在firstName中输入'john'或在lastname中输入'john',则会产生相同的结果,这是正确的。
如果您想要不同的结果,那么您也可以转换您的查询添加输入源。这样,第一个查询参数将是{firstnameQuery: 'john'}
,第二个{lastnameQuery: 'john'}
,因为这两个不同,不会有任何问题。
如果每个输入都有不同的搜索触发器,那么就没有必要将它们组合在一起。