Sto lavorando a un sito Web che aggiorna i valori sulla pagina ogni 5 secondi, chiama a un database remoto e restituisce un modello MVC tramite una chiamata Get Json, e chiamaKnockout.js - ko.mapping.fromJS - Visible Binding non si aggiorna
viewModel = ko.mapping.fromJS(model)
.
Sto quindi l'aggiornamento di questo modello di vista ogni 5 secondi con un'altra chiamata Get e chiamare questa chiamata mappatura poi
viewModel = ko.mapping.fromJS(model, viewModel).
Gli attacchi sono corrette sui miei elementi HTML come il modello originale che viene recuperato dal database è visualizzato sullo schermo, ma quando la proprietà IsVisible sul modello non accade nulla, cioè la riga della tabella deve essere impostata su invisibile e un'altra deve essere impostata su visible.
Ad ogni aggiornamento il modello deve essere diverso, con le righe impostate come visibili o invisibili insieme all'aggiornamento del testo di altri span, questa parte funziona e gli aggiornamenti vengono visualizzati sulla pagina, solo la visibilità non cambia.
Esercitazione HTML del problema invisibile visibile, con Javascript della chiamata di aggiornamento.
Tutte le variabili del modello sono correttamente chiamate Impossibile pubblicare il modello per il pubblico.
<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>
Stai dicendo che il codice visibile non funziona mai, né sul caricamento iniziale dei dati né sugli aggiornamenti successivi? –
Spiacente, la chiamata originale funziona e mostra le righe corrette, ma è il successivo aggiornamento chiama che non nasconde il visibile attualmente ma ora è impostato su righe invisibili, o mostra l'originale nascosto, ma ora è impostato su righe visibili. –