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