javascript - knockout 下拉选项呈现回调

标签 javascript jquery knockout.js

我一直使用 Harvest's Chosen dropdown这需要在 <select> 上调用一些 js元素。现在,我正在使用 Knockout 呈现我的选择列表。

这是用于在选择下拉列表中转换标准下拉列表的代码

$(dropdownSelectorOrElement).Chosen()

我需要知道 Knockout 何时 完成 <select> 的渲染,为了调用上面的代码:可能,回调函数应该引用 <select>本身,这样我就可以在不使用选择器的情况下通过。

knockout 暴露了 optionsAfterRender回调(已记录 here :参见“注释 2”)但是:

  • optionsAfterRender每次呈现选项时都会调用

  • optionsAfterRender仅提供对选项元素的引用

我需要类似 optionsAfterRender 的东西但仅在整个 <select> 时调用已经完成渲染。 knockout 有这样的吗?

我准备了一个 jsfiddle这说明了 optionsAfterRender .

最佳答案

我已经使用在 this question 上找到的自定义绑定(bind)解决了问题.

ko.bindingHandlers.chosen = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {

        $(element).chosen();
    },
    update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var value = ko.unwrap(valueAccessor()); // - see comment
        $(element).trigger("liszt:updated");
    }
};

请注意,如果您不使用ko.unwrap,更新函数将不会触发,正如在this 中告诉我的那样。与此问题相关的问题。

关于javascript - knockout 下拉选项呈现回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19855520/

相关文章:

javascript - 使用 sammy 设置 knockout 可观察值以进行路由

javascript - JQuery UI 拖放在项目到达目的地时显示警报

java - 禁用浏览器中的后退按钮

javascript - Bootstrap 模态样式表单验证

jquery - 如何在页面滚动时淡入/淡出 div?

c# - Knockout.js 和 MVC

带名字的 JavaScript 字典

javascript - 输入复选框在选中时更改 div 颜色

jquery - 使用jqgrid和coldfusion生成excel报告

knockout.js - 如何从 durandal/knockout 的自定义绑定(bind)中访问父 View 模型或 Root View 模型