在Bacon.js中使用变量作为EventStream或Property

时间:2014-04-29 12:54:20

标签: javascript variables hash properties bacon.js

我是Bacon.js的新手,我正在努力弄清楚它是如何工作的。那么,有没有办法使用变量,例如来自URL的散列,就好像它是onVariableChange事件的EventStream一样。对不起,如果我写的东西很尴尬。

这是我的代码:

var hash =  window.location.hash.slice(1, window.location.hash.length);

newdata = hash.asEventStream("change").onValue( function(){**do_something_with_new_hash_value();**
} );

1 个答案:

答案 0 :(得分:1)

asEventStream从jQuery事件创建一个Bacon.js EventStream。所以你只能将它应用于jQuery对象,而不是JavaScript变量。因此,在您的情况下,您可以使用jQuery / HTML5事件hashchange从其更改中创建EventStream:

$(window).asEventStream('hashchange')
         .map(function () { return window.location.hash; });

无法将变量本身转换为EventStream或Property,因为需要有一种方法来通知更改,而正常变量不提供这些更改。但是,您可以使用Bacon.Bus创建EventStream或Property,只要您在变量发生变化时调用push