2012-10-09 61 views
5

Tengo algunas cajas de selección que actúan erráticamente en ios. Estoy ejecutando cordova 1.8.1 y tengo una aplicación knockout.js ejecutándose en mi página. Cuando selecciono un elemento en el selector de elementos, se selecciona, pero también lo hacen todos los demás elementos de la lista. Ahora, por lo que puedo decir, se selecciona e informa el elemento adecuado cuando envío el formulario, pero se ve realmente muy malo para el usuario y podría ser muy confuso. Estoy haciendo algo de fantasía, aquí está el código:Lista de selección de Knockout.js que actúa erráticamente en ios

<select class="dropdownList1" style='width:35%;left:28%;position:absolute;' data-bind="value:ContactUsForm.Month,options:ContactUsForm.Months,optionsCaption: 'Month'"></select> 

Pero aquí es el resultado cuando tomo 7 para el mes:

enter image description here

Esto no es un cuadro de selección muti. Me parece que el error aquí está en iOS, pero mi sospecha es que Knockout también está haciendo una nueva versión cuando selecciono un valor. En los navegadores normales, el cuadro se cierra de manera que nunca vea un estado "intermedio", pero con ios, el cuadro permanece abierto hasta que haga clic en "hecho".

+0

Este problema ocurre también en nuestra página web. ¿Alguna solución o solución hasta ahora? –

+0

¿Qué sucede si elimina el enlace 'valor'? –

+0

Si se elimina el enlace de valor, ¡no tiene este problema de representación! –

Respuesta

5

Este problema se produce cuando Knockout actualiza los elementos en el menú desplegable. Pero incluso si ContactUsForm.Months nunca cambia, Knockout aún actualiza los elementos cada vez que cambia el valor, como cuando selecciona un elemento. Consulte el artículo RP NiemeyerKnockout.js Performance Gotcha #3 - All Bindings Fire Together para obtener más detalles sobre este problema.

Creo que la solución que presenta le servirá. En lugar de utilizar el enlace options, debe usar su enlace isolatedOptions. (También el value vinculante debe ser siempre después options o isolatedOptions.)

<select data-bind=" 
    isolatedOptions:ContactUsForm.Months, optionsCaption:'Month', 
    value:ContactUsForm.Month"></select> 
+0

Gracias por la sugerencia michael. Lo intentaré –

+0

Probado y solucionó el problema –

+0

Knockout 2.3.0 o 3.0.0 beta debería arreglarlo sin la necesidad de cambiar tu código. –

Cuestiones relacionadas