4

フロントエンドからCollection.updateを呼び出している場合(メソッド呼び出しは許可されています)、更新は正常に機能しますが、以下の例外がスローされます(サーバーではなく、ChromeのJSコンソールで)。更新は行われましたが、同じコレクションに接続している他のクライアントは、ブラウザーを更新するまで更新を表示しません。例外が原因であると思われます。

これを引き起こす可能性のあるアイデアはありますか?

Exception from Meteor.flush: Error: Can't create second landmark in same branch
    at Object.Spark.createLandmark (http://checkadoo.com/packages/spark/spark.js?8b4e0abcbf865e6ad778592160ec3b3401d7abd2:1085:13)
    at http://checkadoo.com/packages/templating/deftemplate.js?7f4bb363e9e340dbaaea8d74ac670af40ac82d0a:115:26
    at Object.Spark.labelBranch (http://checkadoo.com/packages/spark/spark.js?8b4e0abcbf865e6ad778592160ec3b3401d7abd2:1030:14)
    at Object.partial [as list_item] (http://checkadoo.com/packages/templating/deftemplate.js?7f4bb363e9e340dbaaea8d74ac670af40ac82d0a:114:24)
    at http://checkadoo.com/packages/handlebars/evaluate.js?ab265dbab665c32cfd7ec343166437f2e03f1a54:349:48
    at Object.Spark.labelBranch (http://checkadoo.com/packages/spark/spark.js?8b4e0abcbf865e6ad778592160ec3b3401d7abd2:1030:14)
    at branch (http://checkadoo.com/packages/handlebars/evaluate.js?ab265dbab665c32cfd7ec343166437f2e03f1a54:308:20)
    at http://checkadoo.com/packages/handlebars/evaluate.js?ab265dbab665c32cfd7ec343166437f2e03f1a54:348:20
    at Array.forEach (native)
    at Function._.each._.forEach (http://checkadoo.com/packages/underscore/underscore.js?772b2587aa2fa345fb760eff9ebe5acd97937243:76:11) 

編集2

このエラーは、更新呼び出しがコンソールで実行された場合にも発生します。これは更新の最初の実行時に発生しますが、それまでに、接続されている他のブラウザーでは反応性が失われます。

編集 これは、更新をトリガーするクリック可能なアイテムのテンプレートです。

<template name="list_item">
  <li class="checklistitemli">
  <div class="{{checkbox_class}}" id="clitem_{{index}}">
    <input type="checkbox" name="item_checked" value="1" id="clcheck_{{index}}" class="checklist_item_check" {{checkbox_ticked}}> {{title}}
  </div>
  </li>
</template>

'list_item'をクリックするためのイベントハンドラーは次のとおりです。

Template.list_item.events = {
  'click .checklistitem' : function(ev) {
    this.checked = !this.checked; 
    var updateItem = {}; 
    updateItem['items.'+this.index+'.checked'] = this.checked; 
    console.log("The error happens here");
    Lists.update({_id: this._id}, {$set:updateItem}, {multi:false} , function(err) { 
      console.log("In callback, after the error"); 
    });
  }
}

すべてはhttp://checkadoo.comで入手できます(これは私のトルネードベースのPythonアプリの移植版です)

4

1 に答える 1