当我使用
设置会话变量时Session.set('location',position);
设定后,当我尝试
时Session.get('location')
通过控制台,我得到一个空对象
我甚至使用
添加了会话meteor add session
meteor add constellation:session
但即使它设定了值
,它仍然没有给出任何价值我用过它:
Meteor.startup(function () {
navigator.geolocation.getCurrentPosition(successCallbk);
});
successCallbk = function(position) {
Session.set('location',position);
};
在successCallbk方法中收到的位置参数具有有效值,但不会保留在位置会话var
中答案 0 :(得分:1)
首先尝试对其进行硬编码。
Session.set(' testSession','这是一个测试')
为您的模板设置Session.Get。
查看是否可以将其显示在模板中。进入浏览器控制台并将会话设置为其他内容,看看它是否有效。
如果这样可行,您可能需要提供更多代码才能查看。
答案 1 :(得分:0)
Session在客户端上提供了一个全局对象,可用于存储任意一组键值对。用它来存储列表中当前所选项目之类的内容。
您应该尝试验证您是否在客户端:
if (Meteor.isClient) {
Meteor.startup(function () {
navigator.geolocation.getCurrentPosition(successCallbk);
});
successCallbk = function(position) {
Session.set('location',position);
};
};
答案 2 :(得分:0)
我知道你发布这个问题很长一段时间后我决定使用Josh的视频作为Meteor的参考资料,我发布了我的解决方案:
success = function(position) {
Session.set('location', {
'coords': {
'accuracy': position.coords.accuracy,
'latitude': position.coords.latitude,
'longitude': position.coords.longitude
},
'timestamp': position.timestamp
});
}
基本上,我只是从位置对象复制了对我来说很重要的对象值。它现在按预期工作。 以供参考: https://www.youtube.com/watch?v=7iqdkVwtuvg