如何使用信号从集线器调用特定功能R
问题描述:
我试图根据服务器接收的参数调用不同的JavaScript函数(从服务器到客户端!)。如何使用信号从集线器调用特定功能R
如何指定哪个函数具有哪个参数我想从服务器的客户端调用?
public class TestData
{
public string function{ get; set; }
public string element{ get; set; }
}
public class PerfHub : Hub
{
public void Send(string id, string message)
{
if (!String.IsNullOrEmpty(id))
{
List<TestData> testList = new List<TestData>();
if (id == "1")
{
testList.Add(new TestData { function= "show", element= "grid" });
Clients.All.sendInstructions(id, testList);
}
else if (id == "2")
{
testList.Add(new TestData { function= "hide", element= "grid" });
Clients.All.sendInstructions(id, testList);
}
我的一个客户端的JavaScript看起来像这样:
$(function() {
var instructions = $.connection.perfHub;
// receive instructions from the server
instructions.client.sendInstructions = function (id, message) {
var requestedFunction = message;
function show(parameters) {
$(parameters).show();
}
show();
function hide(parameters) {
$(parameters).show();
}
hide();
目前我使用jQuery .hover方法,我似乎无法获得单击事件正常工作发送ID到服务器。
$.connection.hub.start().done(function() {
$('html *').hover(function() {
// Call the Send method on the hub.
instructions.server.send($(this).attr('id'), $(this).val());
//$('#message').val($(this).attr('id')).focus();
}, function() {
$('#message').val('').focus();
});
});
});
谢谢!
答
我使用动态密钥修复了它。
var instructions = $.connection.perfHub;
instructions.client.sendInstructions = function (id, message) {
if (id === "serverFunction") {
var ctx = {
showRoads: function (param) { $(param).show(); },
hideRoads: function (param) { $(param).hide(); },
shoresOn: function (param) { $(param).show(); },
shoresOff: function (param) { $(param).hide(); },
showTiles: function (param) { $(param).show(); },
sideTiles: function (param) { $(param).hide(); }
}
for (var index = 0; index < message.length; ++index) {
ctx[message[index].function](message[index].element);
}
}
}
// Call the Send method on the hub.
$.connection.hub.start().done(function() {
$('html *').click(function() {
instructions.server.send($(this).attr('id'), $(this).val());
});
});
希望这来自于人们有益的,它肯定为我做的:)
有什么错误,你得到什么?究竟发生了什么? Clients.All.sendInstructions(id,testList);是在客户端上调用名为sendInstructions的函数的正确方法 – reckface