[英]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.