我在这里概述了一个非常烦人的bug:<select> only shows first char of selected option,我需要一种方法来删除显示内容:请不要开箱即用以避免该bug。有什么建议么?

继承人:

<select data-bind="options: Values, optionsText: 'DisplayNameWithCost', optionsCaption: ControlCaption, selectedOptions: SelectedValues, event: { change: $root.resolveAllAttributeUi }, disable: IsDisabled"></select>


编辑:
我设法弄清楚了它的原因,因为selectedOptions: SelectedValues为空白,并且在IE9中未选择任何内容。至于该修复程序,我不确定。这是在IE9 http://jsfiddle.net/9CaTa/中尝试的示例

最佳答案

selectedOptions仅用于多选列表。请参见http://knockoutjs.com/documentation/selectedOptions-binding.html

您可能想使用value绑定:http://jsfiddle.net/mbest/9CaTa/2/

编辑:

selectedOptions不适用于optionsCaption,但是您可以通过创建一个包装selectedOptions的自定义绑定使它至少在默认情况下至少选择第一项:

ko.bindingHandlers.mySelectedOptions = ko.utils.extend({}, ko.bindingHandlers.selectedOptions);
ko.bindingHandlers.mySelectedOptions.update = function(element) {
    ko.bindingHandlers.selectedOptions.update.apply(this, arguments);
    if (element.selectedIndex === -1)
        element.selectedIndex = 0;
}


这是使用此绑定的示例:http://jsfiddle.net/mbest/9CaTa/3/

我注意到,如果选择标题,则不会清除selected数组。相反,它将只有一个undefined项目。如果您不想这样做,也可以在自定义更新函数中进行检查,然后清除数组:http://jsfiddle.net/mbest/9CaTa/4/

09-16 23:00