我有一个非常烦人的错误,概述如下:<select> only shows first char of selected option我需要一种方法来移除 display:none 我的盒子以避免这个错误。有什么建议吗?
这是绑定(bind):
<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
绑定(bind)来代替:http://jsfiddle.net/mbest/9CaTa/2/
编辑:
selectedOptions
不能很好地与 optionsCaption
配合使用,但您可以通过创建一个包装 selectedOptions 的自定义绑定(bind)使其至少默认选择第一个项目
:
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;
}
这是使用此绑定(bind)的示例:http://jsfiddle.net/mbest/9CaTa/3/
我注意到如果我选择标题,selected
数组将不会被清除。相反,它将有一个 undefined
项目。如果你不想要它,你也可以在你的自定义更新函数中检查它,然后清除数组:http://jsfiddle.net/mbest/9CaTa/4/
关于javascript - 绑定(bind)完成后 KnockoutJS 触发回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11767061/