0
我正在嘗試將Polymer與Meteor結合使用,但是如果您使狀態成爲被動狀態,那麼存在切換狀態的元素會出現一些問題,例如paper-checkbox。避免更新本地客戶端
紙張複選框是常規復選框的發燒友版本。它在兩種狀態之間交替檢查和未檢查。如果點擊該複選框,聚合物事件將觸發並切換狀態。
當您使複選框處於被動狀態時,會出現問題。你會得到Polymer和Meteor之間的競爭條件。聚合物只是將複選框狀態切換到當前狀態的相反方向,而Meteor則根據集合中的值設置元素狀態。
因此,取決於哪個事件贏得比賽,複選框被設置爲正確狀態或再次切換,因此顯示爲錯誤狀態。 集合中的狀態總是正確的,但前端顯示會混亂。
這裏是我的模板代碼:
<template name="task">
<paper-checkbox class="toggle-checked" {{isChecked}}></paper-checkbox>
<span class="text">{{text}}</span>
</template>
和根據事件&助手:
Template.task.events({
"click .toggle-checked": function (e) {
// Set the checked property to the opposite of its current value
Meteor.call("setChecked", this._id, ! this.checked);
}
});
Template.task.helpers({
isChecked: function() {
return this.checked ? 'checked' : 'unchecked';
}
});
Meteor.methods({
setChecked: function (taskId, setChecked) {
var task = Tasks.findOne(taskId);
Tasks.update(taskId, { $set: { checked: setChecked} });
})
});
是否有辦法防止Task.update後更新本地客戶端的流星()打電話,但要保持對其他客戶的反應能力?
你,當恰克'click'到'change' - 這個解決同樣的問題,在我的項目。謝謝!我也使用'fastclick'軟件包。 – qnub 2015-01-23 10:12:34