私はMVC4アプリケーションでうまく動作する以下のJavascriptとHtmlコードを持っています。
@model string
<script src="@this.Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"> </script>
<script src="@this.Url.Content("~/Scripts/jquery.signalR.js")" type="text/javascript"> </script>
<script src="@this.Url.Content("~/Scripts/knockout.js")" type="text/javascript"> </script>
<script src="@this.Url.Content("~/Scripts/knockout.mapping-latest.js")" type="text/javascript"> </script>
<script type="text/javascript" src="/signalr/hubs"> </script>
<script type="text/javascript">
$(function() {
function outingDataViewModel() {
var self = this;
self.hub = $.connection.outings;
self.ID = ko.observable();
self.OutingNumber = ko.observable();
self.OutingName = ko.observable();
//Initializes the view model
self.init = function() {
self.hub.getOuting('@this.Model');
};
self.hub.updateOuting = function (data) {
self.ID(data.ID);
self.OutingName(data.OutingName);
self.OutingNumber(data.OutingNumber);
};
self.updateOuting = function() {
var outing = { "ID": self.ID(), "OutingNumber": self.OutingNumber(), "OutingName": self.OutingName() };
self.hub.saveOuting(outing);
};
}
var vm = new outingDataViewModel();
ko.applyBindings(vm);
// Start the connection
$.connection.hub.start(function() { vm.init(); });
$('.data').change(function() { vm.updateOuting();});
});
</script>
<div id="OutingSummary">
<div data-bind="text:OutingNumber"></div>
<input data-bind="value:OutingName" class="data"/>
</div>
しかし、私は私の$以下を実行してマッピングを実装しようとする変更(機能(){vm.updateOuting();})( 'データ。')。決して呼ばれない。 Chromeデベロッパーツールでエラーが発生していないようで、私は迷っています。情報はhtmlにバインドされ、テキストボックスからタブアウトしても何も起こりません。 (以前と同じスクリプト参照)
、役立ちます....私はjQueryを使ってそれをやっている理由は、原因となる複数のテキストボックス数十があるように起こっていることです最終製品に保存してください。それらのクラスにすべて「データ」のクラスを与え、それらをすべて一回で拘束するほうがずっと簡単です。 – PlTaylor
ああ、1つのJqueryセレクタを使用してたくさんの購読を避けたいと思っています。 – madcapnmckay
あなたはself.hub.updateOutについて正しくあります。これは$( 'data')呼び出しが必要です。 – PlTaylor