に私は私の基幹プロジェクトでRxJSをしようとしています。現在、私はバックボーンスタイルのイベントを表示しています。バインディング/ Unbiding backbonejsイベントRxJS
events:{
"click .cross_10_10":"clearSearch",
"keypress .searchUsers": "searchUsers"
}
バックボーンはこれらのイベントを適切にバインド/バインド解除します。どのように私はまた、ビューが消えるとアンバインドを取得、これらのイベントをバインドするRx.Observable.fromEvent
/Rx.Observable.fromEventPattern
を使用することができます。
GitHub docsはRxJSがバックボーンにフックをサポートしていますが、どのように見つけることができませんでしたと言います。
現在のコード
MyView = Backbone.View.extend({
constructor: function(container) {
var html = $.trim($("script#tmpl_myview").html());
this.el = $(_.template(html)({type:"random"}));
},
events:{
"keypress .searchUsers": "searchUsers"
},
searchUsers: function() {
var searchTerm = this.$(".searchUsers").val().trim();
$.get("/searchUsers?q="+searchTerm)
.then(_.bind(this.drawUsers, this));
},
drawUsers: function(users) {
//render users in dom
}
})
私は、検索クエリを絞るために、ユーザーRxJSにしたいです。バックボーンではなくjqueryだけだったら、私はこれをやるでしょう。
var keyStream = Rx.Observable.fromEvent($(".searchUsers"), 'keypress').debounce(300)
.map(function(e){
return $(".searchUsers").val();
}).distinctUntilChanged();
var respStream = keyStream.switchMap(function(searchTerm){
return $.get("/searchUsers?q="+searchTerm);
});
respStream.subscribe(function(users){
//render
});
私は両方を組み合わせて、これらの機能を最大限に活用したいと考えています。以下は
このページには、*「ネイティブ、RxJSはそのイベントシステムを使用するため、このようなjQueryの、...とBACKBONE.JS、それらにライブラリやフックの数をサポートしています」*と言います。それは、**私が思うと思う** "彼らのイベントシステム" **は、DOMイベントを扱うイベントハッシュではなく、イベントメカニズムで構築されたバックボーンを意味します。特に、この[Githubの問題](https://github.com/Reactive-Extensions/RxJS/issues/679) –
に基づいた彼らは、私たちが発見すると、ライブラリの多くは、我々.onと.offメソッドを持っていたことである」と述べました*その周りを簡単に包み込むことができます。バックボーンイベントハッシュを扱うことはほとんどありません。おそらく、問題を提起し、GitHubでこれを明確にすることは良い考えです。ところで、あなたはこれで何を達成しようとしていますか? –
私も同じことを読んでいます。私はいくつかのフィルター関連のチェックボックスと検索ボックスを持っています。私はこれらからの入力を受け取り、検索呼び出しをバックエンドに送り、データを取得してレンダリングします。ビューが消えると、これらのチェックボックスとキーボード入力もアンバインドされます。 – hridayesh