Estoy vinculando una lista de objetos a un select
usando knockout. Clase de objeto puede tener cualquier número de propiedadesEl enlace de opciones de selección única con la validación de jQuery no funciona
<select id="TheProperty_City"
name="TheProperty_City"
class="required"
data-bind="options: cityList,
optionsText: 'Name',
value: selectedCity,
optionsCaption: '--select the city--'" />
Esto funciona perfectamente bien y puedo usar viewModel.selectedCity().Name
o viewModel.selectedCity().Value
para los elementos de carga del niño.
Mi problema es con la validación de jQuery. Si dejo la declaración como la anterior, jQuery no restablece el error incluso después de la selección.
Lo arreglé especificando optionsValue
en el enlace, pero luego el selectedCity
devuelve el valor escalar y no el objeto completo. ¿Alguna idea de cómo preservar el comportamiento del objeto o hacer la validación de manera diferente?
<select id="TheProperty_City"
name="TheProperty_City"
class="required"
data-bind="options: cityList,
optionsText: 'Name',
optionsValue: 'Value', //added the optionsValue
value: selectedCity,
optionsCaption: '--select the city--'" />
El error se queda allí cuando optionsValue
no se especifica:
Aquí está mi reloj Objeto en selectedCity
:
Aquí está un objeto Reloj en selectedCity
cuando optionsValue
está especificado:
Gracias, eso es lo que tengo en su lugar como una solución, pero es tedioso hacerlo para todas las listas desplegables. Mi script knockoutjs está creciendo rápidamente y me pregunto si vale la pena el esfuerzo ya que se pierden los helpers de control mvc Html, las anotaciones de datos de ViewModel del servidor y el soporte de validación incorporado. Por supuesto, la unión de datos es excelente. De todos modos, haré esto como una respuesta para ayudar a otros buscadores. –
¿Cómo implementaría un enlace personalizado para solucionar esto? – Jason
Tuve el mismo problema y lo resolví de la misma manera que RP Niemeyer lo describió. Todavía me pregunto cómo hacerlo más agradable, porque como escribió Jason no se puede leer en grandes modelos de vista. –