我正在开发一个我有select元素的Web应用程序。我将它绑定到一个集合。我正在使用淘汰赛这样做。
这是我的代码:
<select multiple class="form-control input-sm"
data-bind="options: ConfigurationParameters ,optionsValue: 'Bit63', optionsText: 'DisplayText', selectedOptions: SelectedConfigParams,select2: { placeholder: 'Choose...' }"></select>
这是我的绑定处理程序:
ko.bindingHandlers.select2 = {
init: function (element, valueAccessor) {
var options = ko.toJS(valueAccessor()) || {};
setTimeout(function () {
$(element).select2(options);
}, 0);
},
update: function (element, valueAccessor, allBindings) {
console.log("update called");
}
};
我有其他选择元素都具有类似的功能。当用户选择所需信息并单击“提交”时,我将数据保存到数据库。执行此操作后,我需要清除选择框中的值。我编写了一个代码来删除&#39; SelectedConfigParams&#39;中的所有元素。但是这些值不会从select元素中删除。在图像中,您可以看到,在清除所选选项后,select元素仍显示先前选定的值。 (SelectedConfigParams是一个ko.observableArray())。
答案 0 :(得分:4)
创建自定义绑定时,需要指定两个不同的函数:
valueAccessor
访问observable,这允许您获取bindingName:
之后指定的值或可观察值,或通过任何其他参数(allBindings, viewModel, bindingContext
)。您应该在此函数中更新元素的状态,应用的插件等,具体取决于新的可观察值所以,你需要做的是:
init
函数以初始化select2
update
函数以更改select2
插件的状态update
功能,以便更新元素或插件的状态有关详细信息,请参阅Knockout's custom binding docs。