在更新其可观察结果后,OptionsCaption未被删除

时间:2018-07-09 10:56:01

标签: javascript knockout.js knockout-3.0

根据敲除文档,使用optionsCaption时,删除select元素中默认文本的方法是将其绑定到可观察对象,并将该值设置为未定义的值,例如

html:

<select id="category" data-bind="options: categoryTypes, value: categoryValue ... optionsCaption: categoryDefaultOptionText()"></select>

Javascript:

categoryDefaultOptionText("Please select"); //the value now displays in the select element with all categoryTypes.
...
...
...
categoryDefaultOptionText(undefined); //the default element is completely removed and only the categoryTypes are displayed.

我的问题是,在设置categoryDefaultOptionText(undefined);时,没有从选择元素中删除默认文本。我已经在jsfiddle中对其进行了测试,它的工作原理使我相信还有其他问题。

应用程序的流程如下:

  1. 项目显示在页面上
  2. 单击一个项目会打开一个新页面
  3. 对服务进行了ajax调用,以检索categoryTypes查找数据
  4. 成功后,将它们填充到可观察到的categoryTypes中,该类别将在数据绑定选项中使用。
  5. 再次进行ajax调用,成功后,用户为此项目选择的值将设置为当前值categoryValue("some value");
  6. 在此成功方法中,完成上一步后,设置categoryDefaultOptionText(undefined);

人们希望它能起作用,但是仍然保留“请选择”。有什么想法吗?

更新:

我使用Java脚本检索select元素,并观察了它在调试时的变化。绝对会删除“请选择”选项,但是一旦页面完全加载后,组合框仍然具有“请选择”选项。是否有可能因为页面未完全加载而无法对其进行更改?

更新2: 我发现了问题。使用optionsCaption时,还有其他一些代码会干扰select元素的工作方式。我不确定该问题该怎么办,因为它很可能与其他任何人都无关(代码是不必要的重复调用)

0 个答案:

没有答案