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?