¿Hay alguna manera de suprimir la validación del modelo en Backbone.js cuando se crea un nuevo modelo por primera vez?Impedir que el modelo Backbone.js se valide cuando se agrega por primera vez a la colección
En mi aplicación, tengo una colección con un número arbitrario de modelos, que se representan como elementos de la lista. El usuario puede hacer clic en un botón en cada elemento, que inserta un nuevo elemento vacío debajo del elemento actual. El elemento vacío está fallando la validación, obviamente, porque no quiero que un artículo vacío se guarde más tarde.
No tengo forma de saber qué valores predeterminados razonables podrían existir cuando estoy creando el nuevo elemento, por lo que llenar el nuevo modelo con datos válidos no parece una opción.
¿Alguna sugerencia?
Actualización: Mientras trabajaba en un problema relacionado tangencialmente, me di cuenta de que estaba usando la versión 0.9.0 de Backbone.js. Cuando se lanzó esta versión, otras personas tenían el mismo problema que yo y se quejaron en this issue en GitHub.
Jeremy ha modificado la validación en 0.9.1 para solucionarlo. Agregar un modelo (temporalmente) vacío a una colección es un uso válido en el mundo real. Podría manejar el nuevo modelo vacío en la vista, pero si está administrando una lista de elementos como yo, eso lo obliga a tener una colección de vistas de artículos (incluida la vacía) además de su colección de artículos imprescindibles. ser modelos válidos. Esa es una solución realmente torpe para un escenario que de otro modo sería sencillo. Me alegro de que esto se solucionó.
No agregar modelos no válidos tiene sentido en teoría, pero no puedo pensar en una mejor manera de permitir que el usuario agregue una nueva fila. Supongo que podría manejar todo esto en la vista, luego agregar el elemento a la colección cuando sea válido, pero eso complicaría en gran medida otros aspectos de esta aplicación. Su ejemplo funciona muy bien, pero cuando lo intento en mi aplicación, el parámetro 'options' se sobrescribe con el objeto' {silent: true} ', que Backbone.js parece calzar automáticamente. Estoy muy desconcertado en este momento. –
No debe agregar modelos no válidos: la vista debe capturar el mensaje de error enviado por la validación en el modelo y dejar que el usuario corrija su entrada o cancelarla. Cuando estoy sacando cosas de nuestro servidor y obtengo datos no válidos, simplemente lo dejo caer al piso (y le envío un mensaje a nuestra instalación de registro de Ajax) porque los modelos no válidos en una colección son una 'mala idea' – tkone