流星許諾反應更新,以便在數據更改時自動更新視圖。包含的排行榜示例演示了這一點。當我測試它時,它運行良好:數據在不同瀏覽器中的多個browsertabs上更新,如預期的那樣。在其他瀏覽器中未收到反應更新
所有設置和去,我開始編寫與流星和進展正在進行,但是當我測試了跨browertabs的反應更新,我注意到只有在一段時間後停止更新跨標籤。
我歸結了問題,下面的代碼,基於一個新的空流星項目:
updatebug.html
<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:
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'});
}
});
}
在多個browsertabs中運行,開始更改一個選項卡中輸入的值。其他選項卡將反映更改。轉到下一個選項卡並更改值。重複幾次。
過了一段時間,任何其他選項卡都不會收到更多更新。它似乎一旦一個選項卡已更改值,它不會收到/顯示任何更新。
差異相比,橫幅例(因爲它是非常相似的):
- 排行榜不使用表單控件
- 排行榜示例執行上更新增量操作,而不是一組
我即將提交一個錯誤報告,但要確保我在這裏沒有做任何愚蠢的事,或者錯過了Meteor Collection機制的重要部分(是的,autopublish包已安裝)。
感謝您的澄清。我想我錯過了有關元素保存的[documentation](http://docs.meteor.com/#livehtml)中的相關部分。 – zwippie 2012-04-16 08:24:52