我有几个选择框在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,盒子会保持打开状态,直到你点击“完成”。
答案 0 :(得分:5)
当Knockout更新下拉列表中的项目时,会导致此问题。但即使ContactUsForm.Months
永远不会更改,Knockout仍会在值更改时更新项目,例如选择项目时。有关此问题的详细信息,请参阅RP Niemeyer的文章Knockout.js Performance Gotcha #3 - All Bindings Fire Together。
我认为他在那里提出的解决方案对你有用。您应该使用他的options
绑定,而不是使用isolatedOptions
绑定。 (value
绑定也应始终位于options
或isolatedOptions
之后。)
<select data-bind="
isolatedOptions:ContactUsForm.Months, optionsCaption:'Month',
value:ContactUsForm.Month"></select>