SignalR JS客户端:将参数传递给invoke方法

时间:2014-08-03 03:59:18

标签: javascript signalr

我正在尝试在对象appHub中编写一个函数来调用服务器上的方法。这是我的代码:

var connection = $.hubConnection();
var appHubProxy = connection.createHubProxy('appHub');

var appHub = {

     //some methods here

     invoke: function(){
        appHubProxy.invoke.call(arguments);
     }
}

如您所见,invoke方法应该像这样调用:

appHub.invoke('serverMethod', arg1, ..., argN)

运行此代码时出现此错误:

  

未捕获的TypeError:无法读取未定义的属性“_”

我试过appHubProxy.invoke(arguments),它不会抛出错误但当然,从不调用服务器方法。

如何正确地将参数传递给SignalR的invoke方法?

1 个答案:

答案 0 :(得分:4)

两个问题:

  1. 当您使用Function.prototype.callFunction.prototype.apply时,您需要传递的第一个参数是上下文(this的值)
  2. 如果您想将参数作为数组传递,则需要使用apply而不是call
  3. 在您的代码中,您使用数组作为上下文调用invoke方法。 invoke方法正在寻找一个嵌套属性(可能是this.connection._),它在数组中不存在,这就是你得到错误的原因。

    所以你可能想要使用它:

    appHubProxy.invoke.apply(appHubProxy, arguments);