0

右側にボードのリストがあり、左側にアクティブなボードがある小さなプロジェクトがあります。

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)
  },
})

ボード内のセルをクリックすると、増加するはずです。コレクション内の基盤となるボードは増加しますが (別のボードをクリックしてから最初のボードに戻るとわかるように)、表示されているボードは増加しません。

ボードをセッション変数に直接保存して、それを返そうとしました。これを行うと、表示されているボードは増加しますが、他のタブのボードは増加しません。アクティブなボードへの編集をすべてのタブのすべての閲覧者にすぐに表示するソリューションを探しています。

4

1 に答える 1

1

質問を投稿した直後に解決する図。どうやら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()
}

更新: これは約 1 日の devel トレインのバグでした。私のタイミングはちょうど良いことがわかりました;-)

于 2012-12-18T04:45:16.750 に答える