0
У меня есть таблица с продуктами, и я хочу отображать в реальном времени количество голосов для каждого продукта с помощью SignalR. Я не знаю, почему $ .connection.hub.start() внутри jquery «каждый» метод работает неправильно. . Я попытался поставить $ ('тд') каждая функция внутри $ .connection.hub.start(), но странные вещи происходит при отладке метода в хаб:SingalR hub method
<div class="products">
<table class="tableClass">
<tbody>
<tr>
@foreach (var item in Model.Products)
{
<td class="@item.Id">
<span class="productId" hidden="hidden">@item.Id</span>
<img src="~/Images/imageNotFound.png" style="max-width: 420px; max-height: 420px" />
<span>@item.Name</span>
@*@Html.ActionLink("Vote", "AddVote", new { productId = item.Id }, new { type = "button" })*@
<input type="button" class="voteBtn" title="Vote" value="Vote" itemid="@item.Id" />
<br />
<span class="votesAmount"></span>
</td>
}
</tr>
</tbody>
</table>
<span class="messageClass" style="color:red;"></span>
</div>
Hub:
public void VotesAmount(int productId, string className)
{
GetVotesAmountResponse response = VoteService.GetVotesAmount(new GetVotesAmountRequest() { ProductId = productId });
int votesAmount = 0;
if (response.Status == true)
{
votesAmount = response.Amount;
Clients.Caller.getVotesAmount(votesAmount, className);
}
else
{
Clients.Caller.getVotesAmount(votesAmount, className);
}
}
Сценарий в виду:
vote.client.getVotesAmount = function (votesAmount, className) {
$('td.'+className).find('span.votesAmount').text('VotesAmount: ' + votesAmount + ' ProductID:' + productId);
};
$('td').each(function() {
$.connection.hub.start().done(function() {
vote.server.votesAmount($(this).find('.productId').text(), $(this).attr('class'));
});
})
Я попытался это тоже (не работает, хотя):
$.connection.hub.start().done(function() {
$('td').each(function() {
vote.server.votesAmount($(this).find('.productId').text(), $(this).attr('class'));
});
});
Поскольку это не так, как работает, вы должны начать соединение только один раз. – vtortola
Я добавил другой способ сделать это (я обновил текст выше), но он все еще не работает должным образом. Мне нужно получить количество голосов от db для каждого продукта и отображать его в надлежащем диапазоне внутри
ответ
Второй вариант должен работать. Проблема связана с идентификатором продукта в методе обратного вызова.
'ProductID:' + productId); };
Товарная переменная здесь не доступна внутри этого метода. Поэтому я удалил это, и он сработал. Лучше вы можете присвоить значение или удалить его.
источник
2014-02-02 07:20:13 Thanigainathan
Благодарим за ответ. Я был очень близок к этой работе, но ваш ответ был очень полезен. Спасибо еще раз – tzm
Смежные вопросы