Javascript Meteor包:Session.set完全不工作
我在Meteor包中有一个全局函数,它位于我通过Javascript Meteor包:Session.set完全不工作,javascript,meteor,Javascript,Meteor,我在Meteor包中有一个全局函数,它位于我通过api.addFiles添加的js文件中: showLayer = function(id) { var layers = Session.get('layers'); layers[id] = true; Session.set('layers', layers); // just for testing - check if it worked var tmpLayers = Session.get('
api.addFiles
添加的js文件中:
showLayer = function(id) {
var layers = Session.get('layers');
layers[id] = true;
Session.set('layers', layers);
// just for testing - check if it worked
var tmpLayers = Session.get('layers');
alert('layers.id:' + layers[id] + ' tmpLayers.id:' + tmpLayers[id]);
window.setTimeout(function() {
var tmpLayers = Session.get('layers');
alert('layers.id:' + layers[id] + ' tmpLayers.id:' + tmpLayers[id]);
}, 1000);
};
请注意,setTimeout
我只是用来给会话
一些时间,如果应该有一些优化延迟更改。结果是layers[id]
被设置为它应该设置的状态,但是tmpLayers[id]
没有被延迟测试,并且在set
之后立即测试
无论我是通过setTimeout
检查delayed,还是直接在函数内部检查:Session.set
行似乎没有任何作用
请注意,这不是一个不发生反应的问题,或者至少我不知道如何解决。简短的解决方案:使用{}而不是[]。 我通过这个堆栈溢出问题找到了一个可能的原因:
然而:那里提供的解决方案并没有解决我的问题解决这个问题的方法是使[]成为{}。不需要克隆,它是现成的。我认为这个问题可能是一个bug,但我无法轻松地重现它。您是否添加了
api.use('session')
在你的package.js
中?不幸的是,是的-我使用的是会话
和流星平台
,应该包括所有其他的。我现在还添加了上面的非延迟测试代码来澄清。