我正在尝试在对象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方法?
答案 0 :(得分:4)
两个问题:
Function.prototype.call
或Function.prototype.apply
时,您需要传递的第一个参数是上下文(this
的值)apply
而不是call
在您的代码中,您使用数组作为上下文调用invoke方法。 invoke方法正在寻找一个嵌套属性(可能是this.connection._
),它在数组中不存在,这就是你得到错误的原因。
所以你可能想要使用它:
appHubProxy.invoke.apply(appHubProxy, arguments);