由于 rxjs-dom 不起作用,我找到了另一种方法。
不要使用 rxjs-dom。它可能已经过时了。我改用 rxjs。这就是我所做的(利用 jquery)。
从我的情况来看:
var search_bar = $("#search");
var textInput = $(search_bar);
var throttledInput =
Rx.Observable.fromEvent(textInput, 'keyup')
.pluck('target','value')
.filter( function (text) {
return text.length > 2;
})
.debounceTime(500)
.distinctUntilChanged();
var suggestions = throttledInput.switchMap(term => term ? this.search(term) : "no term");
suggestions.subscribe(
function (data)
{
console.log(data)
},
function (e)
{
console.log(e);
}
);
search(value)
{
return $.ajax({
type: "get",
url: "src/php/search.php",
data: {
name: value
}
}).promise();
}
首先,它从我的一个输入中获取值。
然后它把它变成一个可观察的值。
debounceTime 用于防止在快速键入时淹没服务器
distinctUntilChange 被使用,所以只发送新的结果
最后,它可以使用 jquery,但必须将其转换回 promise。