我正在尝试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
我使用以下
我做错了什么? 感谢。
原因是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);
答案 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)