绑定完成后KnockoutJS fire回调

时间:2012-08-01 20:27:35

标签: javascript internet-explorer knockout.js internet-explorer-9

我有一个非常烦人的错误,如下所述:<select> only shows first char of selected option我需要一种方法来删除显示:没有我的盒子以避免这个错误。有什么建议吗?

继承人的约束力:

<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/

中的示例

1 个答案:

答案 0 :(得分:0)

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

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

编辑:

selectedOptionsoptionsCaption不兼容,但您可以通过创建包装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/