我一直用过 收获的选择下拉 这需要打电话给某些JS <select> 物品。现在,我正在用淘汰赛渲染我的选择列表。

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

$(dropdownSelectorOrElement).Chosen()

我需要知道 什么时候 淘汰赛完成了 <select>, ,为了调用上面的代码:可能,回调函数应引用 <select> 本身,以便我可以在不使用选择器的情况下通过。

敲除揭露 optionsAfterRender 回调(已记录 这里: :请参阅“注2”)但是:

  • optionsAfterRender 每次渲染时都会被调用

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

我完全需要类似的东西 optionsAfterRender 但只有当整个 <select> 已经完成渲染。淘汰赛有这样的东西吗?

我已经准备了一个 JSFIDDLE 说明 optionsAfterRender.

有帮助吗?

解决方案

我已经解决了这种自定义绑定 这个问题.

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, ,更新功能不会发射,因为它已经告诉我 这个 与此问题有关的问题。

其他提示

还可以创建一个后置绑定:

ko.bindingHandlers.afterRender = {
    update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
        allBindings.get('afterRender').call(viewModel, element);
    }
};

有了这个观点:

<select data-bind="
options: Options,
value: selection,
optionsText: 'text',
optionsValue: 'value',
afterRender: renderCallback
"></select>
<span data-bind="text: selection"></span>

和此视图模型:

function viewModel() {

    this.renderCallback = function (selectElement) {
        console.log('call');
    };

    this.Options = [{
        text: "abee",
        value: "123"
    } ...
};

见小提琴

我希望它有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top