Javascript 取消“选项”绑定的自定义绑定
我使用的击出选项绑定如下:Javascript 取消“选项”绑定的自定义绑定,javascript,jquery,data-binding,knockout.js,Javascript,Jquery,Data Binding,Knockout.js,我使用的击出选项绑定如下: <select id="mydata" data-bind="options: mydata, optionsText: function(item) {return getText(item); }, optionsValue:'dataId', optionsCaption:'Choose...'"> </select> ko.bindin
<select id="mydata" data-bind="options: mydata,
optionsText: function(item) {return getText(item); },
optionsValue:'dataId',
optionsCaption:'Choose...'">
</select>
ko.bindingHandlers.chosen = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
ko.bindingHandlers.options.init(element);
$(element).chosen(); //i added this
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor);
$(element).trigger("chosen:updated");//i added this
}
})
但是在这个定制绑定中,我应该在哪里指定optionsText、optionsValue、OptionvCaptions呢?谢谢。选项文本、选项值、选项vCaptions都是AllBindingsAccess参数的一部分。因此,您可以像通常一样在数据绑定中指定它们,并传递它们,这是您发布的代码所做的,或者您可以在更新绑定中键入默认值。我认为您真正想要做的是在模板中指定它们,而不是在绑定中放入特定于应用程序的逻辑,但是如果您真的想要
ko.bindingHandlers.chosen = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
//options.init only takes one parameter
ko.bindingHandlers.options.init(element);
$(element).chosen(); //i added this
},
update: function (element, valueAccessor, allBindingsAccessor) {
//options.update takes 3 parameters
//we want the chosen binding to have defaults, if they aren't specified alr
allBindingsAccessor.optionsText = allBindingsAccessor.optionsText || function(item) {return window.MyApplication.GetText(item)};
allBindingsAccessor.optionsValue = allBindingsAccessor.optionsValue || 'dataId';
ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor);
$(element).trigger("chosen:updated");//i added this
}
为什么需要再次指定optionText、optionValue和OptionvCaptions?