如何清除Select2中的选定值
问题描述:
我正在使用具有select元素的Web应用程序。我将它绑定到一个集合。我正在使用淘汰赛做到这一点。如何清除Select2中的选定值
这里是我的代码:
<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");
}
};
我还有其他的选择要素都具有类似的功能。当用户选择需要的信息并单击提交时,我将数据保存到数据库。这样做后,我需要清除选择框中的值。我写了一个代码来删除'SelectedConfigParams'中的所有元素。但是这些值不会从select元素中移除。在图像中,您可以看到,在清除选定的选项后,select元素仍然显示先前选择的值。 (SelectedConfigParams是一个ko.observableArray())。
答
WHE您创建一个自定义绑定,您需要指定两种不同的功能:
- INIT:这就是所谓的一次,当绑定完成。您应该使用它来添加事件处理程序,并为元素设置默认属性,应用jQuery插件...
- 更新:这是在init之后调用的,并且每当使用任何使用的observable或computed observable发生更改时。可以通过
valueAccessor
访问观测值,该观测值允许您获取在bindingName:
之后或通过任何其他参数(allBindings, viewModel, bindingContext
)指定的值或可观察值。你应该更新元素的状态下,应用插件等在此功能,这取决于新观察到的值
所以,你需要做的是:
- 创建
init
功能初始化select2
- 创建
update
功能改变select2
插件 - 的状态,您的视图模型创建一个可观察到的,并使用您的自定义绑定绑定到你的元素(这将CAL l初始化,并用可观察值的初始值更新)
- 修改viewmodel中的observable。当你这样做,你的粘结剂的
update
函数将被调用,这样你的元素或插件的状态可以被更新
请参阅Knockout's custom binding docs获取更多信息。
什么是jQuery的select2?请添加更多代码,理想情况下也是一个小提琴。至少是HTML,jQuery的select2(或者它的解释),模型,以及对applyBindings的调用。如果没有,它不可能帮助你 – JotaBe 2014-10-30 09:20:21
@JotaBe请看这个链接。 http://ivaynberg.github.io/select2/ 这是我的第一个Web应用程序(也是Knockout的新手)。 – Raj123 2014-10-30 09:25:31
所有需要的信息都需要回答你的问题。请将其添加到您的问题中,否则它可能会因“不清楚您要求的内容”而被关闭。不要将此信息添加为注释 – JotaBe 2014-10-30 09:37:49