结合MVC4,SignalR,knockoutJS时发生了onclick的挑战

时间:2013-05-12 16:30:55

标签: asp.net-mvc-4 knockout.js signalr

我有一个简单的 MVC4 应用,但是我想要将 knockoutJS SignalR 结合起来,我遇到的挑战似乎是由事实上,我正在尝试在同一个按钮上分配2个onclick事件:使用knockoutJS和signalR。请告诉我这里有什么问题。以下是代码。

这是我的viewModel:

var viewModel = {
  searchString: ko.observable("Monique"),
  search: function () {
    $.ajax({
      url: "@Url.Action("Search")",
      type: "post",
      data: ko.toJSON(this),
      contentType: "application/json",
      success: function (result) {
        $('#info').append(result.message);
      }
    });
  },
  searchClient: function () {
    //do sth
  },
  showAll: function () {
    //do sth 
  }
};
ko.applyBindings(viewModel);

这部分与signalR:

有关

这是我在服务器上的中心:

[HubName("send")]
public class DataHub: Hub
{
    public void Send(string text)
    {
        Clients.All.addMessage(text);
    }
}

这是一个signalR js部分:

$(function () {
  var hub = $.connection.send;
  hub.client.addMessage = function (text) {
    alert(text);
    $('#info').append(text);
  };
  $.connection.hub.start().done(function () {
    $('#btnServer').click(function () {
      alert('btn server clicked');
      hub.server.send("something");
    });
  });
});

正如您所看到的,knockoutJS在此处进行了onclick事件处理search: function () { } 而在signalR我也有$('#btnServer').click(function() {

因此,与knockoutJS有关的是什么,但与signalR相关的部分不起作用......

1 个答案:

答案 0 :(得分:0)

在使用knockout绑定click事件的函数中,返回true。默认情况下,Knockout将阻止click事件采取任何默认操作。