Javascript 如何将动态呈现的内容传递给绑定处理程序?

Javascript 如何将动态呈现的内容传递给绑定处理程序?,javascript,jquery,knockout.js,selectize.js,Javascript,Jquery,Knockout.js,Selectize.js,我有一个select标记和一个自定义绑定处理程序(sample)。当我有静态选项时,我会在自定义绑定处理程序中看到所有选项标记(元素),但当我们动态呈现选项时,我如何才能获得相同的标记 案例1: <select data-bind="sample:{}"> <option value="">Select gear...</option> <option value="pitons"

我有一个select标记和一个自定义绑定处理程序(sample)。当我有静态选项时,我会在自定义绑定处理程序中看到所有选项标记(元素),但当我们动态呈现选项时,我如何才能获得相同的标记

案例1:

<select data-bind="sample:{}">
    <option value="">Select gear...</option>
    <option value="pitons">Pitons</option>
    <option value="cams">Cams</option>
</select>

选择档位。。。
岩钉
凸轮
案例2:

<select data-bind="sample:{},foreach:options">
    <option data-bind="text:optValue"></option>
</select>

代码:

ko.bindingHandlers.sample={
init:函数(元素){
案例1:元素具有所有3个选项
案例2:元素动态呈现时没有**任何**
}
}

实际上,我正在尝试向元素添加selectize,如案例2所示,因为没有呈现的选项,我无法应用相同的选项。

您的自定义绑定处理程序函数需要5个参数:

ko.bindingHandlers.sample = {
    update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
        var options = allBindings.get('options');
        console.log(options);
    }
};
第三个参数可用于使用其
get
方法访问绑定到图元的所有模型值。因此,这意味着您可以这样做:
allBindings.get('options')
,这样您就可以访问动态选择选项

您可能希望对绑定处理程序使用
update
回调,而不是
init
,因为您的选项是动态的,并且可能在select元素初始化之后到达

ko.bindingHandlers.sample = {
    update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
        var options = allBindings.get('options');
        console.log(options);
    }
};