私は 5 秒ごとにページの値を更新する Web サイトに取り組んでおり、リモート データベースを呼び出し、Get Json 呼び出しを介して MVC モデルを返し、呼び出します。
viewModel = ko.mapping.fromJS(model)
.
次に、別の Get 呼び出しを使用してこのビュー モデルを 5 秒ごとに更新し、このマッピング呼び出しを呼び出します。
viewModel = ko.mapping.fromJS(model, viewModel).
データベースから取得された元のモデルが画面に表示されるため、HTML 要素のバインディングは正しいですが、モデルの IsVisible プロパティが何も起こらない場合、つまり、テーブル行を非表示に設定し、別の行を設定する必要があります。見えるように。
更新ごとに、モデルは異なる必要があります。行が表示または非表示に設定され、他のスパンのテキストが更新されます。この部分は機能しており、ページに更新が表示されていますが、表示は変更されていません。
HTMLは目に見えない問題をはたらき、更新呼び出しのJavascriptで。
モデルのすべての変数が正しく呼び出されているため、モデルを公開することはできません。
<table class="SelectionTable" cellpadding="0" cellspacing="0">
<tbody data-bind="foreach: { data: markets.Selections, as: 'selections' }">
<tr class="Selection">
<td><span data-bind='text: selections.Number, visible: selections.IsVisible'></span></td>
<td><span data-bind='text: selections.Name, visible: selections.IsVisible'></span></td>
<td><span data-bind='text: selections.CurrentPrice, visible: selections.IsVisible'></span></td>
<td><span data-bind='text: selections.OpeningPrice, visible: selections.IsVisible'></span></td>
</tr>
</tbody>
</table>
<script type="text/javascript">
var viewModel;
var self;
var getUpdates = setInterval(function () {
$.getJSON(
"/Home/Get", {},
function (model) {
viewModel = ko.mapping.fromJS(model, viewModel);
});
}, 5000);
$(document).ready(
function () {
$.getJSON(
"/Home/Get", {},
function (model) {
viewModel = ko.mapping.fromJS(model);
bindViewModel();
});
});
function bindViewModel() {
ko.applyBindings(viewModel);
}
</script>