我一直使用 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/