gpt4 book ai didi

javascript - 避免更新本地客户端

转载 作者:行者123 更新时间:2023-12-02 16:37:48 25 4
gpt4 key购买 nike

我正在尝试使用 Polymer使用 Meteor,但具有切换状态的元素存在一些问题,例如 paper-checkbox ,如果您使状态变为响应式(Reactive)。

纸质复选框是常规复选框的更高级版本。它在选中未选中两种状态之间交替。如果您点击复选框,则会触发 polymer 事件并切换状态。

当您使复选框状态为响应式时,就会出现问题。您将得到 Polymer 和 Meteor 之间的竞争条件。 Polymer 只是将复选框状态切换到与当前状态相反的状态,而 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} });
})
});

是否有一种方法可以防止 Meteor 在 Task.update() 调用后更新本地客户端,但保持其他客户端的 react 性?

最佳答案

尝试像这样更改事件处理程序:

Template.task.events({
"change .toggle-checked": function (e) {
var checked = e.currentTarget.checked;
if (checked !== this.checked) {
Meteor.call("setChecked", this._id, checked);
}
}
});

关于javascript - 避免更新本地客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com