【问题标题】:A challenge with onclick occured while combining MVC4, SignalR, knockoutJS结合 MVC4、SignalR、knockoutJS 时出现 onclick 挑战
【发布时间】:2013-05-06 18:00:30
【问题描述】:

我有一个简单的 MVC4 应用程序,但是我想将 knockoutJSSignalR 结合起来,但我遇到了一个挑战,这似乎是由我试图在同一个按钮上分配 2 个 onclick 事件的事实:使用 knockoutJS 和 signalR。请让我知道这里有什么问题。下面是代码。

这是我的视图模型:

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 相关的部分无效...

【问题讨论】:

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


    【解决方案1】:

    在使用敲除绑定点击事件的那个函数中,返回true。默认情况下,Knockout 会阻止点击事件执行任何默认操作。

    【讨论】:

    • 它没有帮助......似乎 $('#btnServer').click(function() 从未被调用过......
    • 是否调用了“完成”?不看 HTML 就很难给出建议。
    猜你喜欢
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2021-07-07
    相关资源
    最近更新 更多