Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 淘汰3.1:选择2无法正常工作,并使用valueAllowUnset_Javascript_Knockout.js_Jquery Select2_Knockout 3.0 - Fatal编程技术网

Javascript 淘汰3.1:选择2无法正常工作,并使用valueAllowUnset

Javascript 淘汰3.1:选择2无法正常工作,并使用valueAllowUnset,javascript,knockout.js,jquery-select2,knockout-3.0,Javascript,Knockout.js,Jquery Select2,Knockout 3.0,我注意到,当我在Select2插件中使用valueAllowUnset:true时,默认值在选择框中不可见。但是,当我单击“选择”按钮时,正确的值会高亮显示 尝试删除“,从上面的提琴中选择2:{}”,看看它应该如何工作 你知道是什么导致了这个问题吗?这与我用于敲除的select2自定义绑定函数有关吗?有趣的是,您的setTimeout调用导致了问题。为什么?我还不确定,但是如果您删除它并在函数末尾直接调用getSemests(),它将选择所选的初始值 我会继续看它,并更新你,如果我找到了这个

我注意到,当我在Select2插件中使用
valueAllowUnset:true
时,默认值在选择框中不可见。但是,当我单击“选择”按钮时,正确的值会高亮显示

尝试删除“
,从上面的提琴中选择2:{}
”,看看它应该如何工作


你知道是什么导致了这个问题吗?这与我用于敲除的select2自定义绑定函数有关吗?

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

我会继续看它,并更新你,如果我找到了这个确切的原因


使现代化
当您查看
select2
插件时,会发现令人惊讶的结果。

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

我会继续看它,并更新你,如果我找到了这个确切的原因


使现代化
当你查看
select2
插件时,你会发现这是一个惊人的发现。

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

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

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

工作代码:

似乎我总是在设立悬赏后立即找到解决方案,即使我在开始悬赏前等待了几个月

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

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

工作代码:

我正在使用
setTimeout
在我的原始代码中模拟ajax调用,它提供了用于选择的选项。
selectedSerm
observeable是默认值,它在ajax响应之前加载
valueAllowUnset:true
防止在我填充列表之前覆盖可观察对象。问题在于select2,它无法更新其标签,即使在打开时选择了正确的值。我正在使用
setTimeout
在我的原始代码中模拟ajax调用,它为select提供了选项。
selectedSerm
observeable是默认值,它在ajax响应之前加载
valueAllowUnset:true
防止在我填充列表之前覆盖可观察对象。问题在于select2,它无法更新其标签,即使在打开时选择了正确的值。请告诉我,我刚刚开始查看
select2
插件是否会监听底层的
select
元素进行更改。这将是一个很好的功能,他们可以在将来添加到它。因此,
select2
github有一段代码用于ko集成,如图所示!是的,我也试过使用他们的ko代码,但没用。谢谢你在这件事上帮助我!告诉我吧,我刚刚开始研究
select2
插件是否会监听底层
select
元素的变化。这将是一个很好的功能,他们可以在将来添加到它。因此,
select2
github有一段代码用于ko集成,如图所示!是的,我也试过使用他们的ko代码,但没用。谢谢你在这件事上帮助我!