Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor包:Session.set完全不工作_Javascript_Meteor - Fatal编程技术网

Javascript Meteor包:Session.set完全不工作

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('

我在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('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
中?不幸的是,是的-我使用的是
会话
流星平台
,应该包括所有其他的。我现在还添加了上面的非延迟测试代码来澄清。