Knockout.js选择列表在ios上不规律地行动

时间:2012-10-09 14:58:32

标签: knockout.js ios6 cordova safari

我有几个选择框在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时的结果:

enter image description here

这不是多选框。在我看来,这里的错误是在iOS中,但我怀疑当我选择一个值时,Knockout也会进行一些重新渲染。在普通的浏览器中,盒子会关闭,因此你永远不会看到“中间”状态,但是对于ios,盒子会保持打开状态,直到你点击“完成”。

1 个答案:

答案 0 :(得分:5)

当Knockout更新下拉列表中的项目时,会导致此问题。但即使ContactUsForm.Months永远不会更改,Knockout仍会在值更改时更新项目,例如选择项目时。有关此问题的详细信息,请参阅RP Niemeyer的文章Knockout.js Performance Gotcha #3 - All Bindings Fire Together

我认为他在那里提出的解决方案对你有用。您应该使用他的options绑定,而不是使用isolatedOptions绑定。 (value绑定也应始终位于optionsisolatedOptions之后。)

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