Rx.js наблюдаем подписаться - нажатие кнопки не ловится - PullRequest
2 голосов
/ 11 апреля 2019

Я пробую очень простой пример с 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);
});

Но в консоли ничего неткогда я нажимаю на кнопку.Я что-то пропустил?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

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

0 голосов
/ 11 апреля 2019

Я завернул свой JS-код в обработчик jquery '$ (document) .ready ()', и он начал работать:

$( document ).ready(function() {    
    var button = $('#testButton');

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

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