Meteor.js : return 游标的非反应性快照
Meteor.js : return a non-reactive snapshot of a cursor
我目前正在 return 从助手处获取来自 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 中改变?我希望它现在 return 像非反应性快照一样 returns.
我想我需要一些 Session 值来自动重新计算助手,然后我可以做一些棘手的事情,比如获取光标,快照 ID,然后切换 returned 光标一个仅匹配此 _id 文档的新查询,并等待会话切换回正常的反应用例,但这将非常棘手。
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
本身是反应性的。然后你调用一个游标,它也是反应式的。因此,根据上下文,您可能会在反应性方面受到其中之一的打击。
我目前正在 return 从助手处获取来自 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 中改变?我希望它现在 return 像非反应性快照一样 returns.
我想我需要一些 Session 值来自动重新计算助手,然后我可以做一些棘手的事情,比如获取光标,快照 ID,然后切换 returned 光标一个仅匹配此 _id 文档的新查询,并等待会话切换回正常的反应用例,但这将非常棘手。
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
本身是反应性的。然后你调用一个游标,它也是反应式的。因此,根据上下文,您可能会在反应性方面受到其中之一的打击。