我一直使用Harvest's Chosen dropdown,它要求在<select>
项目上调用一些js。现在,我要使用淘汰赛来呈现我的选择列表。
这是用于在“选择的”下拉列表中转换标准下拉列表的代码
$(dropdownSelectorOrElement).Chosen()
我需要知道Knockout何时完成渲染
<select>
才能调用上面的代码:可能,回调函数应该引用<select>
本身,这样我就可以在不使用选择器的情况下通过。但是,淘汰赛公开了
optionsAfterRender
回调(记录为here:请参见“注释2”):每次呈现选项时都会调用
optionsAfterRender
optionsAfterRender
仅提供对option元素的引用我完全需要类似
optionsAfterRender
的东西,但是仅当整个<select>
完成渲染时才调用。淘汰赛有这样的东西吗?我准备了一个jsfiddle来说明
optionsAfterRender
。 最佳答案
我已经通过this question上的此自定义绑定解决了。
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问题中已告知我有关此问题的信息。