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 仍会在值更改时更新项目,例如当您选择项目时。有关此问题的更多详细信息,请参阅RP Niemeyer的文章Knockout.js Performance Gotcha #3 - All Bindings Fire Together

我认为他在那里提出的解决方案对你有用。而不是使用options绑定,你应该使用他的isolatedOptions绑定。(而且value绑定应该总是在optionsor之后isolatedOptions。)

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