Pracuję na stronie internetowej, która aktualizuje wartości na stronie co 5 sekund, wywołuje zdalną bazę danych i zwraca model MVC przez wywołanie Get Json, i zadzwoń pod numerKnockout.js - ko.mapping.fromJS - Visible Binding nie aktualizuje
viewModel = ko.mapping.fromJS(model)
.
jestem następnie aktualizowania tego widoku modelu, co 5 sekund za pomocą innego połączenia GET i nazywają to wezwanie mapowania następnie
viewModel = ko.mapping.fromJS(model, viewModel).
Wiązania są poprawne na moich elementów HTML w oryginalnym modelu, które są pobierane z bazy danych jest wyświetlane na ekranie, ale wtedy, gdy właściwość IsVisible w modelu nic się nie dzieje, tzn. wiersz tabeli powinien być ustawiony jako niewidoczny, a inny powinien być ustawiony jako widoczny.
Przy każdej aktualizacji model powinien być inny, z ustawionymi wierszami widocznymi lub niewidocznymi wraz z aktualizacją tekstów z innych zakresów, ta część działa, a aktualizacje są wyświetlane na stronie, tylko widoczność się nie zmienia.
HTML wyś wietla widoczny niewidoczny problem z JavaScriptem wywołania aktualizacji.
Wszystkie zmienne z modelu są poprawnie nazywane Nie mogę opublikować modelu dla publiczności.
<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>
Czy mówisz, że widoczny kod nigdy nie działa, ani przy początkowym ładowaniu danych, ani w kolejnych aktualizacjach? –
Niestety, wywołanie orginal działa i pokazuje poprawne wiersze, ale jest to kolejne wywołanie aktualizacji, które nie ukrywa aktualnie widocznych, ale teraz ustawione na niewidoczne wiersze lub pokazują ukryte, ale teraz ustawione na widoczne wiersze. –