Domanda

Nel mio JS ho la seguente chiamata Ajax, che lega il JSON risultante utilizzando il plug-in di mappatura del knockout.

$.getJSON("/Game/GetRack", function (data) {
    game.rack = ko.mapping.fromJS(data);
    ko.applyBindings(game.rack, $('.rack')[0]);
});
.

/Get/GetRack restituisce:

[{"Color":3,"Letter":"a","Points":5},null,null]

Come puoi vedere, c'è solo un oggetto nell'array. Gli altri due sono nulls.

Ora usando il mapping knockout posso fare:

ko.mapping.fromJS([null, { Color: 55, Letter: "b", Points: 88 }, null], game.rack);
.

Fare così correttamente aggiorna la mia vista e ora vedo solo una lettera B su una seconda posizione. Gli altri due sono nulls.

Le mie domande sono: Posso aggiornare un valore in una particolare posizione senza utilizzare la mappatura.fromjs?

Assumendo che ho una lettera A all'indice 0, voglio cambiare il secondo null a
{ Color: 55, Letter: "b", Points: 88 }
. E fai aggiornare automaticamente il mio Ui per assomigliare a questa modifica. Come si può fare?


.

Modifica:

Ho deciso di andare con l'esempio dato da John Earlers. Purtroppo ho ancora un problema, perché il mio array è due dimensionale.

Hai un esempio qui: http://jsfiddle.net/wgz59/29/
(È molto simile all'esempio di John Earles, ma include una matrice tridimensionale).

Qualcuno può indicare perché fare clic sul pulsante di modifica non modifica i valori degli elementi? È anche possibile modificare i loro valori senza chiamare ha hasmutated ()?

e l'ultimo (solo se i due precedenti sono risolti). È possibile creare una tabella HTML staticamente (perché ad esempio so che sarà sempre 3x3, quindi voglio due tabella di stampa con 3 righe e 3 colonne e poi legare ogni singola cella alle cellule a matrice. L'ho provato già e io ho provato Problemi, perché il knockout non ha avuto i valori per le cellule ...


.

Edit2:

Sono riuscito a rispondere alle mie domande sopra me stesso, un esempio di violino è qui:

http://jsfiddle.net/wgz59/44/

Quindi, posso creare un tavolo statico e legare singole celle, quando dichiaro l'array in questo modo:

self.matrix = ko.observableArray([[0,0,0],[0,0,0],[0,0,0]]);

o

self.matrix = ko.observableArray([[,,],[,,],[,,]]);.

Posso aggiornare i valori e funziona per una tabella statica, ma non funziona per una tabella dinamica (creata dinamicamente da knockout). Puoi vedere il comportamento sulla pagina di violino (collegamento all'inizio di questa modifica). Sai perché premere il pulsante "Cambia" non aggiorna i valori in una tabella creata dinamicamente?

È stato utile?

Soluzione

Non so esattamente cosa stai cercando di fare, ma se Game.RACK è un OSSERVALEBARARY, quindi puoi manipolarlo usando JavaScript.

Ecco la pagina della documentazione su ObservableArrays:

http://knockoutjs.com/documentation/observableArrays.html

Quella pagina mostra i metodi "Helper" disponibili disponibili su ObservableArRay stesso.Inoltre è possibile manipolare la matrice sottostante, ma quindi devi chiamare 'ValueSasmutated ()' su OsservableArRay per consentire a tutti gli ascoltatori registrati a conoscere le modifiche.

Ecco un semplice jsfiddle che mostra la manipolazione:

http://jsfiddle.net/jeales/WGZ59/8/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top