我正在创建一个使用 2 个分部视图的控制台视图。每个分部视图封装一种数据,并使用自己的 SignalR 数据。
如果我在主视图中只包含一个分部视图,则分部视图可以完美运行。我包含哪种视图并不重要。
如果我同时包含两者,则仅刷新第一个部分视图。不调用第二个视图中心函数。
附加到集线器的 js 函数作为以下简单结构,它在分部视图中定义:
$(function () {
//same for both views
var hub = $.connection.someHub;
//Each view uses a different function
hub.client.partialupdateX = function (data) {
// Add the message to the page.
tabledata = JSON.parse(data);
table.ajax.reload();
};
$.connection.hub.start();
});
两个视图的中心相同,但每个视图附加到不同的函数。 在服务器端,这两个函数在同一周期内触发。
我是否必须打破隔离并将中心 js 函数放在顶层页面? 我在这里错过了什么吗?
结果非常简单。我只能启动 hub 一次,所以我在包含两个部分视图后将以下函数放在主页中。
$(function () {
$.connection.hub.start();
});
所有集线器函数都可以绑定在分部视图中。