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のメカニックに欠かせないことを確かめたいと思います(はい、自動発行パッケージがインストールされています)。
説明をありがとう。私は、要素の保存について[documentation](http://docs.meteor.com/#livehtml)の関連部分を見逃してしまったと思います。 – zwippie