Search code examples
javascriptbacon.js

Bacon.js how to filter an event stream based on another property?


I have an event stream for when ENTER is presssed

var enter = 
  $('#text')
  .asEventStream('keydown')
  .filter(function(e){
    return e.keyCode === 13
  })

This works great. But, I want to only take action if ENTER is pressed and another property - textMatches - is true. How do I do this? I tried

var advance = textMatches.and(enter)

But it didn't work.


Solution

  • Boolean methods are defined for operations between two Properties, but enter is an EventStream. Properties can be used to filter EventStreams and the following should work for your use case:

    var advance = enter.filter(textMatches)