Rx.js可观察订阅 - 按钮点击未被捕获

问题描述 投票:2回答:2

我正在尝试使用Rx.js observable-subscribe的一个非常基本的例子。这是我的代码:

HTML

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"></meter>
    <title></title>
</head>
<body>
<script type="text/javascript"  src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.4.0/Rx.js"></script>
<script  src="https://code.jquery.com/jquery-3.4.0.min.js" integrity="sha256-BJeo0qm959uMBGb65z40ejJYGSgR7REI4+CW1fNKwOg=" crossorigin="anonymous"></script>
<script src="index.js"></script>

<button id='testButton'>Click</button>

</body>
</html>

JS

var button = $('#testButton');
var btn$ = Rx.Observable.fromEvent(button, 'click');

btn$.subscribe(function(e){
    console.log(e);
});

但是当我点击按钮时,控制台中没有任何内容。我错过了什么?

rxjs observable
2个回答
2
投票

fromEvent要求第一个参数是DOM元素。 $可能是指返回jQuery对象的jQuery

因此,在将button传递给fromEvent之前,你应该从var button = $('#testButton'); var btn$ = Rx.Observable.fromEvent(button[0], 'click'); // or .get(0) instead of [0] 中提取原生元素:

https://stackblitz.com/edit/rxjs-lpvsng?file=index.ts

现场演示:$( document ).ready(function() { var button = $('#testButton'); var btn$ = Rx.Observable.fromEvent(button, 'click'); btn$.subscribe(function(e){ console.log(e); }); });


0
投票

我将我的JS代码包装到jquery'$(document).ready()'处理程序,它开始工作:

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.