bacon.js Bus.plug:未捕获错误:不是Observable:[object Object]

时间:2015-03-17 02:51:15

标签: javascript bacon.js

我正在尝试baconjs的教程。 https://baconjs.github.io/tutorials.html#content/tutorials/2_Ajax

但是,我在" Bus.plug"

时收到错误
var cart = ShoppingCarEt([])
var cartView = ShoppingCartView(cart.contentsProperty)
var newItemView = NewItemView()
cart.addBus.plug(newItemView.newItemStream)

错误:

Uncaught Error: not an Observable : [object Object]
shopBundle.js:145 assertObservable
shopBundle.js:2650 Bus.plug

我使用以下

  • baconjs@0.7.53
  • jquery@2.1.3
  • bacon-jquery-bindings@0.2.8
  • webpack 1.7.3

我做错了什么? 感谢。


编辑:2015/3/25

原因是newItemView.newItemStream不是Observable (newItemView.newItemStream instanceof Bacon.Observable返回false。)

newItemView.newItemStream是EventStream

EventStream {takeUntil: function, sampledBy: function, combine: function, flatMapLatest: function, fold: function…}

所有EventStream都不是Observable吗?

我按如下方式制作了newItemStream:

var $button = $('#addButton');
var $nameField = $('#nameText');
var newItemProperty = Bacon.$.textFieldValue($nameField);
var newItemClick = $button.asEventStream('click');
var newItemStream = newItemProperty.sampledBy(newItemClick);

以下工作正常。第一次问题是我的错过。

/ *而且,我尝试更简单的代码。它有同样的错误。 * /

 var someStream = Bacon.interval(1000).map(function() {
    return new Date().getTime();
});
var bus = new Bacon.Bus();
bus.log();
bus.plug(someStream);

1 个答案:

答案 0 :(得分:1)

它是由“bacon-jquery-bindings”(https://www.npmjs.com/package/bacon-jquery-bindings

引起的
var Bacon = require('baconjs');
var $ = jQuery  = require("jquery");
Bacon.$ = require("bacon-jquery-bindings"); <-

似乎覆盖了asEventStream函数。

我们应该使用“bacon.jquery”(https://www.npmjs.com/package/bacon.jquery