0

私は単純なMVC4アプリを持っていますが、 knockoutJSSignalRを組み合わせたいのですが、同じボタンに 2 つの onclick イベントを割り当てようとしているという事実が原因であると思われる課題がありました。ここで何が問題なのか教えてください。以下はコードです。

これは私のビューモデルです:

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関連は動かない…

4

1 に答える 1

0

ノックアウトを使用してクリック イベントをバインドする関数では、 を返しtrueます。デフォルトでは、Knockout はクリック イベントがデフォルト アクションを実行しないようにします。

于 2013-05-12T21:43:35.463 に答える