我目前正从帮助者返回来自for x in open("words.txt",'r'):
print x
# Here i want to delete the line after printing and continue the loop
的光标。
Javascript控制器:
Meteor.users
HTML视图:
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;
}
}
});
关键是我的视图可以在两种模式之间切换:我希望光标更改在模式1时触发一些cs动画,在模式2时不要触摸。我的意思是:我甚至不想要如果由于接收了我的助手的#each而添加或删除文档时要重新呈现的视图。
我该如何处理?如何确保我的光标在模式2中不会改变?我希望它在返回时像非响应快照一样返回。
我想我需要一些Session值来自动重新计算帮助程序,然后我可以做一个棘手的事情,比如获取光标,快照id,然后用匹配的新查询切换返回的光标只有这个_id的文档,并等待会话切换回正常的被动用例,但这将非常棘手。
Meteor中没有办法快照光标的状态吗?
感谢您的指导!
答案 0 :(得分:1)
您有两种可能的选择。
第一个是使用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
本身就是被动的。然后你调用一个光标,它也是被动的。因此,根据具体情况,您可能会在反应性方面遇到其中一个。