gpt4 book ai didi

javascript - meteor .js : return a non-reactive snapshot of a cursor

转载 作者:行者123 更新时间:2023-11-27 23:38:01 24 4
gpt4 key购买 nike

我目前正在从助手返回 Meteor.users 的光标。

Javascript Controller :

Template.rtcCarousel.helpers({
rtcUsers: function() {
if (Session.get("rtcSettings"))
{
let cursor = Modules.both.query.getRTCUsers(Session.get("rtcSettings"), 20);

cursor.observe({
added: ( item ) => {
if (Session.get('viewMode') == 1)
{
// my css animation stuff here
}
}
});

return cursor;
}
}
});

HTML View :

<template name="rtcCarousel">
{{#each $mapped rtcUsers}}
<div>
{{> rtcucard}}
</div>
{{/each}}
</template>

重点是我的 View 可以在两种模式之间切换:我希望光标更改在模式 1 下触发一些 CS 动画,在模式 2 下不执行任何操作。我的意思是:我什至不想要 View 如果由于 #each 接收我的助手而添加或删除文档,则重新渲染。

我该如何处理这个问题?如何确保我的光标在模式 2 下不会改变?我希望它在返回时像非响应式(Reactive)快照一样返回。

我想我将需要一些 session 值来自动重新计算助手,然后我可以做一些棘手的事情,例如获取游标,快照ID,然后使用仅与此匹配的新查询切换返回的游标_id 的文档,然后等待 session 切换回正常的响应式(Reactive)用例,但这会非常棘手。

Meteor 中没有办法对游标状态进行快照吗?

感谢指导!

最佳答案

您有两种可能的选择。

第一个是使用Tracker.nonreactive(func)

cursor = Tracker.nonreactive(Modules.both.query.getRTCUsers(Session.get("rtcSettings"), 20))

第二个是禁用 reactivity on the find

Modules.both.query.getRTCUsers = function (settings, limit, reactive) {
return RTCUsers.find({settings: settings}, {limit: limit, reactive: reactive})
}

Modules.both.query.getRTCUsers(Session.get("rtcSettings"), 20, false);

或者可能是两者的组合,具体取决于您的用例。我会说选择组合,因为在你的助手中,你有 Session ,它本身是 react 性的。然后你调用一个游标,它也是 react 性的。因此,根据具体情况,您可能会在 react 性方面受到其中之一的打击。

关于javascript - meteor .js : return a non-reactive snapshot of a cursor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33959208/

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