javascript - 绑定(bind)完成后 KnockoutJS 触发回调

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

我有一个非常烦人的错误,概述如下:<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/

相关文章:

javascript - 在 Internet Explorer 中,pasteHTML 会导致意外行为吗?

jquery - knockout 自定义绑定(bind) foreach

javascript - 选择选项后无法执行操作

javascript - 如何在不使用精确位置的情况下从中心缩放图像

css - 本应占用 "rest of the page"的div在ie中扩展到页面之外

javascript - 用户登录后以 Angular 获取用户个人资料

Jquery 动画在 IE 中不起作用?

javascript - 如何获取从一个JS文件到viewModels的另一个JS以及主JS文件中存在的值?

javascript - 在 Rails 5 中使用 sortable.js 和 turbolinks

javascript - 如何在 Rails 应用程序中包含带有自定义 css 和 js 文件的静态页面