SignalR 2.X 和 JQuery 3.X “ON”未触发
Posted
技术标签:
【中文标题】SignalR 2.X 和 JQuery 3.X “ON”未触发【英文标题】:SignalR 2.X and JQuery 3.X "ON" not fired 【发布时间】:2020-09-12 07:13:24 【问题描述】:我在使用任何版本的 JQuery 3.x 运行 SignalR 2.4.1 时遇到问题
我有一个非常简单的集线器,可以将推送通知发送到 AngualrJS 应用程序。该应用程序适用于 JQuery 1 和 2,但一旦我升级到 3,SignalR 就会停止工作。 我读到了旧加载的问题,卸载。但事实并非如此,因为它已在 2.2.1 中修复
我在控制台中没有错误,angualrJS 工厂只想在通知到来时触发 ON 事件。
这是我使用的代码,非常标准,可以很好地与 JQuery
function signalRHubProxyFactory(serverUrl, hubName, startOptions)
var connection = $.hubConnection(signalRServer);
var proxy = connection.createHubProxy(hubName);
connection.start().done(function () );
return
on: function (eventName, callback)
proxy.on(eventName, function (result)
$rootScope.$apply(function ()
if (callback)
callback(result);
);
);
,
off: function (eventName, callback)
proxy.off(eventName, function (result)
$rootScope.$apply(function ()
if (callback)
callback(result);
);
);
,
invoke: function (methodName, callback)
proxy.invoke(methodName)
.done(function (result)
$rootScope.$apply(function ()
if (callback)
callback(result);
);
);
,
connection: connection
;
;
return signalRHubProxyFactory;
有人遇到同样的问题吗?
这是我的脚本列表
<script src="../Scripts/jquery-3.5.1.js"></script>
<script src="../Scripts/jquery.signalR-2.4.1.js"></script>
<script src="../Scripts/bootstrap.min.js"></script>
<script src="../Scripts/angular.min.js"></script>
谢谢
【问题讨论】:
【参考方案1】:对于遇到这个问题的每个人来说,为了使 AngularJS、SignalR 和 JQuery >= 3 工作,必须在它们之前添加 angular.js 脚本
<script src="../Scripts/angular.min.js"></script>
<script src="../Scripts/jquery-3.5.1.js"></script>
<script src="../Scripts/jquery.signalR-2.4.1.js"></script>
<script src="../Scripts/bootstrap.min.js"></script>
【讨论】:
以上是关于SignalR 2.X 和 JQuery 3.X “ON”未触发的主要内容,如果未能解决你的问题,请参考以下文章