2012-10-09 32 views
5

ios sisteminde hatalı olarak hareket eden birkaç seçme kutum var. Cordova 1.8.1 çalıştırıyorum ve sayfamda çalışan bir knockout.js uygulamasına sahibim. Öğe seçicideki bir öğeyi seçtiğimde, seçili olur, ancak listedeki diğer tüm öğeler de yapılır. Şimdi, formu gönderdiğinizde uygun öğenin seçilip bildirildiğini söyleyebildiğim kadarıyla, kullanıcı için gerçekten çok kötü görünüyor ve çok kafa karıştırıcı olabilir. Burada, süslü bir şey yapıyorum kodudur:Knockout.js liste görünümü açık ios üzerinde davranıyor

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

Ama burada ay için 7 almaya gelirken sonucudur:

enter image description here

Bu muti seçme kutusu DEĞİLDİR. Bana buradaki hatanın iOS'ta olduğu anlaşılıyor, fakat şüphem, bir değer seçtiğimde Knockout'un da yeniden görüntü oluşturmasıdır. Normal tarayıcılarda, kutu kapanır, böylece bir 'ara' durumu görmezsiniz, ancak ios ile, kutu 'bitti' seçeneğini tıklayana kadar açık kalır.

+0

Bu sorun da sitemizde olur. Şu ana kadar herhangi bir çözüm veya çözüm var mı? –

+0

"value" bağını kaldırırsanız ne olur? –

+0

Değer bağlaması kaldırılırsa, bu oluşturma sorunu yoktur! –

cevap

5

Knockout öğeyi açılır menüde güncelleştirdiğinde bu sorun neden oluyor. Ancak, ContactUsForm.Months hiçbir zaman değişmeyecek olsa bile, Knockout öğeyi seçtiğinizde, değerler değiştiğinde öğeleri günceller. Bu sorun hakkında daha fazla bilgi için RP Niemeyer adlı makaleye bakın: Knockout.js Performance Gotcha #3 - All Bindings Fire Together.

Burada sunduğu bir çözümün sizin için çalışacağını düşünüyorum. options bağlayıcısını kullanmak yerine, onun isolatedOptions bağlayıcısını kullanmalısınız. (Ayrıca value hep options veya isolatedOptions sonra olmalıdır bağlayıcı.)

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

Öneri michael için teşekkürler. Ben bir deneyin –

+0

Test edilmiş ve sorunu çözmek için –

+0

Knockout 2.3.0 veya 3.0.0 beta kodunuzu değiştirmeniz gerekmeden bunu düzeltmek gerekir. –