检查一下。我有一个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
!如果我将数组更改为具有不同的第一个数字,我会得到该数字,但没有数组的跟踪。它似乎在未经我许可的情况下从我的阵列中拔出第一个数字。当我尝试记录第二个和第三个索引时,我得到了不确定!我完全不知道这里发生了什么。
答案 0 :(得分:1)
尝试
$(EVENTS).trigger('newAccelData', [data]);
不同之处在于,数据是数组中的第一个参数 - 它本身(作为数组)不会被解释为args数组。
http://api.jquery.com/trigger/
.trigger( event [, extraParameters ] )
extraParameters类型:Array或PlainObject要传递给事件处理程序的其他参数。