具有函数触发的异常奇怪的行为

时间:2014-01-01 22:12:53

标签: javascript node.js

检查一下。我有一个websockets nodejs应用程序,它具有以下代码块:

socket.on('accelerometer', function (data) {
    console.log('*********');
    console.log(data);
    $(EVENTS).trigger('newAccelData', data);
});

newAccelData绑定到函数processAccelData,如下所示:

$(EVENTS).bind('newAccelData', processAccelData);

我不确定为什么会这样写。我不熟悉Node,这是基于其他人的代码。无论如何,这就是processAccelData的样子:

function processAccelData(event, accel)
    {
        console.log('accel');
        console.log(accel);
        console.log("Accel Event: "+accel);

        $('#x').html(accel[0]);
        $('#y').html(accel[1]);
        $('#z').html(accel[2]);
    }

好的,所以这里的事情变得奇怪了。在socket.on代码中,当我记录data时,我得到了我在其他地方传递套接字的内容,一个包含三个字符串的数组,如下所示:["1", "1", "2"]。好,太棒了。然后我显然用这一行将此data对象传递给processAccelData:

$(EVENTS).trigger('newAccelData', data);

然而,当我到达processAccelData并尝试记录变量accel时,我只是得到1!如果我将数组更改为具有不同的第一个数字,我会得到该数字,但没有数组的跟踪。它似乎在未经我许可的情况下从我的阵列中拔出第一个数字。当我尝试记录第二个和第三个索引时,我得到了不确定!我完全不知道这里发生了什么。

1 个答案:

答案 0 :(得分:1)

尝试

$(EVENTS).trigger('newAccelData', [data]);

不同之处在于,数据是数组中的第一个参数 - 它本身(作为数组)不会被解释为args数组。

http://api.jquery.com/trigger/

.trigger( event [, extraParameters ] ) 
  

extraParameters类型:Array或PlainObject要传递给事件处理程序的其他参数。