簡體   English   中英

敲除“選項”綁定的自定義綁定

[英]Knockout Custom Binding for “options” Binding

我正在使用像這樣的剔除選項綁定:

 <select id="mydata" data-bind="options: mydata,
             optionsText:  function(item) {return getText(item); },
                 optionsValue:'dataId',
                 optionsCaption:'Choose...'">

</select>

我想將jquery Chosen插件應用於下拉列表,每當“ mydata”更改時,我都想應用所選的更新。 因此,我認為最好的方法是通過ko自定義綁定。 我在網上找到了一個簡單的示例,實質上是“選項”綁定的包裝,如下所示:

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在此自定義綁定中optionsText, optionsValue, OptionvCaptions我應在哪里指定optionsText, optionsValue, OptionvCaptions 謝謝。

optionsText, optionsValue, OptionvCaptions都是allBindingsAccessor參數的一部分。 因此,您可以像通常那樣在數據綁定中指定它們,然后傳遞它們,這就是您發布的代碼所做的,或者您可以在更新綁定中鍵入默認值。 我認為您真正想要做的是在模板中指定它們,而不是在綁定中放入特定於應用程序的邏輯,但是如果您確實想要...

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
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM