我的程序流程要求我首先在Viewmodel中设置select选项的值,然后将可用选项加载到Viewmodel中。这会导致问题,通常在此后的选择列表中会看到第一个可用选项,而所选选项值保持在指定值。
我希望设置新的“valueAllowUnset”会有所帮助,但是在使用它时我的页面会变得无法响应。
因此我在加载选项后再次设置原始值。奇怪的是,这仅在我设置值,设置不同的值然后再次设置值时才有效,例如
self.data()[field](orgValue);
self.data()[field]({});
self.data()[field](orgValue);
(我在self.data observable中存储了多个选择列表的值,并使用属性索引“field”访问它们。)
我试图将其剥离为一个简单的JSFiddle(http://jsfiddle.net/timvdh/HN6DE/),但行为并未显示在那里,尽管该示例与我的实际应用程序非常相似。但是,我在那里使用了大约30个选择列表。
所以我希望,有人可以对我的应用程序中出现的问题进行有根据的猜测,我希望我必须将原始值设置三次才能提供线索。
编辑:这个小提琴演示了,在填充选项列表之前和之后设置所选选项确实可以使用“valueAllowUnset”:http://jsfiddle.net/timvdh/HT5Tp/
我正在使用带有knockout.js的JQuery Mobile,这导致了问题(对不起,我甚至没有想到JQM首先出现问题)。我现在在填写列表之前设置选项,填写列表后我打电话
$("#selectmenuID").selectmenu("refresh");
显示选项。
悬挂式浏览器不是由淘汰引起的,我的应用程序中还有对selectmenus的额外订阅。 “valueAllowUnset”改变了我的代码中的问题引起的selectmenus和触发循环的行为。