Imagine un modelo de espina dorsal simple comoBackbone.js - set personalizados
window.model= Backbone.Model.extend({
defaults:{
name: "",
date: new Date().valueOf()
}
})
Estoy tratando de encontrar una manera de hacer siempre el modelo de tienda el nombre en minúsculas, independientemente de la entrada proporcionada. es decir,
model.set({name: "AbCd"})
model.get("name") // prints "AbCd" = current behavior
model.get("name") // print "abcd" = required behavior
¿Cuál es la mejor manera de hacerlo? Aquí está todo lo que podía pensar:
- Sustituir el "ajuste" método
- Use un "SantizedModel", que escucha los cambios en este modelo base y almacena las entradas desinfectados. Todo el código de vista se pasaría en este modelo sanitizado.
El ejemplo específico "minúsculas" que mencioné puede ser mejor manejado técnicamente por la vista al recuperarlo, pero imagine un caso diferente donde, digamos, el usuario ingresa valores en libras y solo quiero almacenar valores en $ s en mi base de datos. También puede haber diferentes vistas para el mismo modelo y no quiero tener que hacer un "toLowerCase" donde quiera que se use.
¿Pensamientos?
Gracias. Consideré esto también, pero esto parecía ser un paso atrás en términos de hacer que fuera legible, anulando la función establecida o agregando una nueva función "setProperty" que lo establece en minúscula y luego lo pasa al conjunto de la red troncal podría ser mejor. A menos que me esté perdiendo algo? – Naren
No hay nada de malo en anular el método 'set' para hacer lo que necesita hacer ... ¿algún preprocesamiento antes del set? Incluso podría considerar extender 'Backbone.Model.prototype.set' para llamar a algunos preprocesadores si coinciden ... algo como esto: https://gist.github.com/1310972 –
validate solo se llama para guardar el método o si se establece options.validate = true. (el silencio no se usa aquí, pero la respuesta es bastante antigua) – webstrap