5

iOS で動作が不安定なセレクト ボックスがいくつかあります。私は cordova 1.8.1 を実行しており、自分のページで knockout.js アプリケーションを実行しています。アイテム ピッカーでアイテムを選択すると、そのアイテムが選択されますが、リストの他のすべてのアイテムも選択されます。現在、私が知る限り、フォームを送信すると適切な項目が選択されて報告されていますが、ユーザーにとっては非常に見栄えが悪く、非常に混乱する可能性があります。私は何か空想をやっています、ここにコードがあります:

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

しかし、月に 7 を選択した場合の結果は次のとおりです。

ここに画像の説明を入力

これはマルチセレクトボックスではありません。ここでのエラーは iOS にあるように思えますが、値を選択したときに Knockout も再レンダリングを行っているのではないかと疑っています。通常のブラウザでは、ボックスが閉じて「中間」状態が表示されることはありませんが、ios では、「完了」をクリックするまでボックスが開いたままになります。

4

1 に答える 1

5

この問題は、Knockoutがドロップダウンのアイテムを更新するときに発生します。ただし、ContactUsForm.Months変更されない場合でも、アイテムを選択するときなど、値が変更されるたびにKnockoutはアイテムを更新します。この問題の詳細については、RPNiemeyer記事Knockout.jsPerformance Gotcha#3-All BindingsFireTogetherを参照してください。

彼がそこで提示する解決策はあなたのために働くと思います。バインディングを使用する代わりに、options彼のisolatedOptionsバインディングを使用する必要があります。(また、valueバインディングは常にoptionsまたはの後にある必要がありますisolatedOptions。)

<select data-bind="
    isolatedOptions:ContactUsForm.Months, optionsCaption:'Month', 
    value:ContactUsForm.Month"></select>
于 2012-10-17T21:09:24.443 に答える