Javascript 无法为会话变量和集合触发反应上下文
我有一个在右边有一个板列表,在左边有一个活动板:Javascript 无法为会话变量和集合触发反应上下文,javascript,meteor,Javascript,Meteor,我有一个在右边有一个板列表,在左边有一个活动板: var updateBoard = function (b) { Boards.update(b._id, b) Session.set("active-board-id", b._id) } Template.controls.boards = function() { return Boards.find() } Template.controls.events({ 'click .board' : function (e
var updateBoard = function (b) {
Boards.update(b._id, b)
Session.set("active-board-id", b._id)
}
Template.controls.boards = function() {
return Boards.find()
}
Template.controls.events({
'click .board' : function (evt) {
updateBoard(this)
}
})
Template.board.b = function() {
var b = Boards.findOne(Session.get('active-board-id'))
return b || Boards.findOne()
}
Template.board.events({
'click .cell': function (evt) {
this.value += 1
},
'click .board': function (evt) {
updateBoard(this)
},
})
当你点击电路板上的一个单元时,它应该增加。集合中的基础板会增加(如您所见,单击另一块板,然后返回到第一块板),但可见板不会增加
我已经尝试将该板直接存储在session变量中并返回该变量。当我这样做时,可见板会增加,但其他选项卡中的板不会随之增加。我正在寻找一种解决方案,使所有选项卡中的所有观众都能立即看到对活动板的编辑。我会在发布问题后立即解决它。显然,
findOne
没有正确注册自己,切换到find
解决了问题
Template.board.b = function() {
var b = Boards.find(Session.get('active-board-id')).fetch()[0]
//var b = Boards.findOne(Session.get('active-board-id'))
return b || Boards.findOne()
}
更新:这是devel train上的一个bug,持续了大约一天。结果证明我的时机正好;-)