Javascript 如何将动态呈现的内容传递给绑定处理程序?
我有一个select标记和一个自定义绑定处理程序(sample)。当我有静态选项时,我会在自定义绑定处理程序中看到所有选项标记(元素),但当我们动态呈现选项时,我如何才能获得相同的标记 案例1: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 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);
}
};