我正在学习SignalR(使用this教程)并获得我班级的代码。问题是执行以下
时this.init = function () {
this.hub.getAll();
}
我得到了Uncaught TypeError:Object#没有方法'getAll'。检查this.hub时,我发现没有add,update,getAll方法。所有这些方法都是Thus.hub.server中的一层内部。为什么this.hub.getAll不存在? this.hub.getAll()和this.hub.server.getAll()是一回事吗?我想不是因为当我将我的代码更改为this.hub.server.getAll()时,错误就消失了但它没有做它应该做的事情:加载数据。
这是脚本部分
@section Scripts {
@Scripts.Render("~/bundles/knockout")
@Scripts.Render("~/bundles/signalr")
<script src="/Scripts/jquery.signalR-2.0.1.min.js" type="text/javascript"></script>
<script src="signalr/hubs" type="text/javascript"></script>
<script src="/Scripts/jquery.livequery.min.js"></script>
BundleConfig.cs
bundles.Add(new ScriptBundle("~/bundles/signalr").Include(
"~/Scripts/jquery.signalR-2.0.1.min.js"));
有什么想法吗?
谢谢,
答案 0 :(得分:0)
您所关注的教程基于较旧版本的SignalR。那时,hub方法被直接添加到hub对象中;现在,它们被添加到hub.server
以避免与客户端方法(在hub.client
上定义)发生冲突。因此,您需要在案件中致电hub.server.getAll()
。至于为什么不起作用,你将不得不提供更多的细节(可能是在一个不同的问题),虽然你要检查的第一件事是你是否在hub.client
而不是在{{1}}上定义客户端方法hub,正如教程中所做的那样。