Meteor.js:返回一个光标的非反应快照
Meteor.js : return a non-reactive snapshot of a cursor
我当前正从一个助手返回一个来自Meteor.users
的光标。
Javascript控制器:
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视图:
<template name="rtcCarousel">
{{#each $mapped rtcUsers}}
<div>
{{> rtcucard}}
</div>
{{/each}}
</template>
关键是,我的视图可以在两种模式之间切换:我希望在模式1中更改光标以触发一些cs动画,在模式2中什么都不做。我的意思是:如果因为接收我的助手的#each而添加或删除了文档,我甚至不希望重新呈现视图。
我该如何处理?如何确保我的光标在模式2中不会发生变化?我希望它在返回时像非反应性快照一样返回。
我想我需要一些Session值来自动重新计算助手,然后我可以做一件棘手的事情,比如获取光标,快照id,然后用一个只匹配这个_id的文档的新查询切换返回的光标,然后等待会话切换回正常的反应用例,但这将非常棘手。
Meteor中没有一种方法可以快照光标的状态吗?
感谢您的指导!
您有两个可能的选项。
第一种是使用Tracker.nonreactive(func)
cursor = Tracker.nonreactive(Modules.both.query.getRTCUsers(Session.get("rtcSettings"), 20))
第二个是禁用发现的反应性
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
,它本身是反应性的。然后你调用一个游标,它也是被动的。因此,根据具体情况,你可能会在反应性方面受到其中一个或另一个的打击。
相关文章:
- 自定义函数中的光标位置
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 在Widget代码中使用javascript从左向右滑动光标图像
- 将文本插入光标所在的文本区域
- 鼠标光标-用于wordpress网站
- 在Widget代码中没有jQuery的情况下,用光标图像从左滑动到右
- 我可以让我的Ajax调用引起一个“;进行中”;光标
- 默认光标在IE和Mozilla中不起作用
- onmousedown更改光标;可能需要控制事件冒泡
- 由于滑块的原因,光标始终是D3中的十字光标
- 即使光标位于屏幕边缘,也可以跟踪鼠标速度
- 引导崩溃具有快照抖动
- draggableCursor没有't更改为等待光标
- 在窗口中单击按钮完成之前,光标不会停止.请继续卸载
- 如何使用VLC Web插件拍摄视频快照
- JQuery BlockUI鼠标加载光标没有't在Google Chrome中返回默认值
- 图像阵列预加载时显示沙漏光标
- 如何检查光标是否位于指定的标记之间
- HTML5-画布元素&自定义光标
- Meteor.js:返回一个光标的非反应快照