私のJS:
<script type="text/javascript">
function DictionaryEntry() {
var self = this;
self.Simplified = ko.observable("");
self.Traditional = ko.observable("");
self.Phonetic = ko.observable("");
self.Definition = ko.observable("");
}
function DictionaryModel() {
var self = this;
self.entries = ko.observableArray([]);
}
var viewModel = new DictionaryModel();
viewModel.update = function () {
var self = this;
var f = $("#fSearch");
$.ajax({
url: f.attr('action'),
type: f.attr('method'),
data: f.serialize(),
success: function (result) {
self.entries = ko.mapping.fromJS(result, viewModel);
}
});
return false;
}
ko.applyBindings(viewModel);
</script>
テーブルhtml:
<table class="table table-striped">
<thead>
<tr>
<th>@T("Simplified")</th>
<th>@T("Traditional")</th>
<th>@T("Phonetic")</th>
<th>@T("Definition")</th>
</tr>
</thead>
<tbody data-bind="foreach: entries">
<tr>
<td data-bind="text: Simplified"></td>
<td data-bind="text: Traditional"></td>
<td data-bind="text: Phonetic"></td>
<td data-bind="text: Definition"></td>
</tr>
</tbody>
</table>
更新をトリガーするボタン..ディクショナリを検索して結果を返し、現在テーブルにあるものを置き換えます。
<input type="submit" value="Search" class="btn" data-bind="click: update" />
私のアクションメソッドでは、これが返されます:
return Json(new
{
// here list is a List<T> with the 4 properties to display in UI
entries = list,
IndexOfPage = indexOfPage,
SizeOfPage = sizeOfPage,
TotalRecords = totalRecords,
Pages = (int)Math.Ceiling((double)totalRecords / sizeOfPage)
});
私が抱えている問題は、何らかの理由で無限ループに陥っているように見えることです。アクションにブレークポイントを設定すると、それが何度も何度も繰り返されるのを見ることができます...継続的に..
私は何が間違っているのですか?ノックアウトはまったく新しいです(JSでもまったく優れているわけではないので、漠然とした答えを出さないでください)