Knockout 3.1:Select2与valueAllowUnset无法正常工作

时间:2014-03-11 18:06:18

标签: javascript knockout.js jquery-select2 knockout-3.0

我注意到当我将valueAllowUnset: true与Select2插件一起使用时,默认值在选择框中不可见。但是,当我单击选择时,会突出显示正确的值。

http://jsfiddle.net/LgXcb/

尝试从上面的小提琴中删除“, select2: {}”,看看它应该如何运作。

有关导致此问题的原因的任何想法?是否与我用于Knockout的select2自定义绑定函数有关?

2 个答案:

答案 0 :(得分:3)

似乎我总是在设置赏金之后立即找到解决方案,即使我在开始奖励之前等了几个月。

问题在于我的自定义绑定的update函数内的代码。在select的可观察值发生变化之后,我还需要手动更新select2,如下所示:

update: function(element, valueAccessor, allBindingsAccessor) {
  var value = ko.utils.unwrapObservable(allBindingsAccessor().value || allBindingsAccessor().selectedOptions);
  if (value) $(element).select2('val', value);
}

工作代码:http://jsfiddle.net/LgXcb/5/

答案 1 :(得分:1)

有趣的是,您的setTimeout电话会导致问题。为什么?我还不确定,但是如果你删除它并在函数末尾直接调用getSemesters(),它将选择所选的初始值。

fiddle

如果我找到确切的原因,我会继续关注它并更新你。


更新

当您查看select2插件的github时,您会发现很棒。