ho il seguente modello:Come escludere alcuni oggetti di Knockoutjs tojs()
var model = {
A: 'One',
B: 'Two',
C: 'Three'
};
mi legano vari elementi dell'interfaccia utente a questi campi, che funziona alla grande. Tuttavia, posso convertire il modello di nuovo ad un oggetto JavaScript in modo da poter salvare le modifiche al server:
var goingToServer = ko.toJS(model);
goingToServer
includerà proprietà A, B e C. Tuttavia, diciamo proprietà C è un pezzo enorme di dati quello non cambierà mai. Mi piacerebbe evitare di inviare questo al server.
C'è un modo per rendere toJS()
solo comprendono un insieme predefinito di campi durante la conversione di un modello nuovo ad un oggetto JavaScript?
Una cosa che ho indagato è lo Knockout Mapping plugin. Ha un ambiente chiamato includono che è documentato come tale:
Quando la conversione del modello di vista posteriore di un oggetto JS, per impostazione predefinita il plugin mappatura include solo le proprietà che facevano parte del vostro modello di vista originale , tranne che includerà anche la proprietà _destroy generata da Knockout anche se non faceva parte dell'oggetto originale . Tuttavia, è possibile scegliere di personalizzare questo array:
Tuttavia, sembra questo plugin non funziona come documentato, come ko.mapping.toJS()
sarà ancora includere A, B e C, anche se passo in una serie di include
['A', 'B']
. Immagino che questa funzione includa i campi aggiuntivi che non erano nel modello originale.
Esiste un modo per escludere determinate proprietà quando si converte un modello su un oggetto JavaScript, a corto di fare qualcosa di hacky come generare l'oggetto e rimuovere manualmente le proprietà che non desidero prima di inviare al server?
che non funziona, come allora, non è possibile associare ad esso a tutti. –
Hai provato? Poiché la documentazione non menziona se è possibile ignorare quando si torna agli oggetti JS. –
Sì, l'ho appena provato. Quando "ignoro" il campo "Note" e quando chiamo applyBindings, ottengo immediatamente un'eccezione che il campo "Note" non è stato trovato nel modello. –