Aggiunta di nuovi oggetti a un array lato client - best practice?

1

Diciamo che hai una lista di "veicoli" - hai un array osservabile di questi ko.observable () s.

Permetti all'utente di aggiungere un nuovo veicolo con il seguente:

var emptyVehicle = {
    "make": "chevrolet",
    "model": "corvette"
};
app.on('CLICKED_ADD_VEHICLE', function () {
            var vehicle = new vehicleViewModel(emptyVehicle);
            vehicle.hasWheels(true);
            innerModel.sets.push(set);
        });

Se salvano il veicolo, ottieni un veicolo reale dal tuo servizio dati, quindi sostituisci quello vuoto con questo:

app.on('CLICKED_SAVE', function (oldVehicle) {
            var newVehicle = new vehicleViewModel(dataservice.createVehicle(oldVehicle));
                    innerModel.vehicles.remove(oldVehicle);
                    innerModel.vehicles.push(newVehicle);
        });

So che sto lasciando un po 'di codice qui, ma questa è più una questione di pratiche / approccio che una domanda di codice. È un approccio accettabile per aggiungere nuovi elementi a un elenco? Crea un modello temporaneo e buttalo via al posto di un oggetto reale se l'utente salva?

    
posta SB2055 01.06.2013 - 03:42
fonte

1 risposta

1

È accettabile, ma non è davvero preferito. Cosa succede se qualcuno cambia il codice in seguito e non riesce a inviare oldVehicle ? Cosa succede se l'evento CLICKED_SAVE viene attivato di nuovo? Cosa succede se la chiamata AJAZ fallisce?

Una migliore pratica consiste nel progettare la tua app in modo che inizi con una matrice innerModel.vehicles vuota, quindi avere addVehicle come metodo di app che carica una nuova vechicleViewModel e la spinge all'array.

Generalmente, gli eventi devono chiamare i metodi, anche se non sono eventi dell'interfaccia utente, a meno che tu non abbia una buona ragione per non farlo.

    
risposta data 01.06.2013 - 17:56
fonte

Leggi altre domande sui tag