2012-04-15 20 views
1

Meteorは反応更新を約束し、データが変更されたときにビューが自動更新されるようにします。付属のリーダーボードの例でこれが実証されています。テストすると正常に動作します。データは、さまざまなブラウザのいくつかのブラウザで、予想どおりに更新されます。他のブラウザータブで無効な更新が受信されない

私は流星でコーディングを開始しましたが、ブラザータブを介して反応的な更新をテストしたときには、のタブ間での更新が停止したのちにしか表示されませんでした。

私は、新しい空の流星プロジェクトに基づいて、以下のコードに問題を煮詰め:

Items = new Meteor.Collection("items"); 

if (Meteor.is_client) { 
    Template.form.items = function() { 
    return Items.find(); 
    }; 

    Template.form_item.events = { 
    'blur input': function(e) { 
     var newValue = $(e.target).val(); 
     console.log('update', this.name, this.value, newValue); 
     Items.update({_id: this._id}, {$set: {value: newValue}}); 
    }, 
    }; 
} 

if (Meteor.is_server) { 
    Meteor.startup(function() { 
    if (Items.find().count() === 0) { 
     Items.insert({name: 'item1', value: 'something'}); 
    } 
    }); 
} 

<head> 
    <title>updatebug</title> 
</head> 

<body> 
    {{> form}} 
</body> 

<template name="form"> 
    <form onsubmit="return false;"> 
    {{#each items}} 
    {{> form_item }} 
    {{/each}} 
    </form> 
</template> 

<template name="form_item"> 
    <div> 
    <label>{{name}} 
     <input type="text" name="{{name}}" value="{{value}}"> 
    </label> 
    </div> 
</template> 

updatebug.js updatebug.html

複数のブラウザで実行する場合は、1つのタブで入力値の変更を開始します。他のタブには変更が反映されます。次のタブに移動して値を変更します。数回繰り返します。

しばらくすると、それ以上の更新は他のタブで受信されなくなります。タブが値を変更するとと表示され、それ以上の更新は表示されません。リーダーボード例に比べ

相違(それは非常に似ているので):

  • リーダーがないフォームコントロール
  • を使用しないリーダーの例ではないセット
、更新にインクリメント動作を行います

私はバグレポートを提出しようとしていますが、ここでは何もやっていないか、Meteor Collectionのメカニックに欠かせないことを確かめたいと思います(はい、自動発行パッケージがインストールされています)。

答えて

2

ここでの問題は入力要素の保存です。 Meteorはテンプレートの再描画全体でidまたはname属性を持つフォームフィールドの入力状態を保持します。再描画では、同じフィールドで別のユーザーが入力を中断したくないため、フォーム要素内の古いテキストが保持されます。テキストボックスからname属性を削除すると、各タブはぼかしで更新されます。

実際、最初の更新があなたの例ではなぜ機能するのかわかりません。それは実際にバグかもしれません!

各ブラウザでコンソールを開くと、データの問題ではないことがわかります。それぞれのブラーイベントでは、開いているタブごとに更新されたドキュメントが表示されます。 (タイプItems.find().fetch()

+0

説明をありがとう。私は、要素の保存について[documentation](http://docs.meteor.com/#livehtml)の関連部分を見逃してしまったと思います。 – zwippie

関連する問題