Knockout.js oracle JET Combobox(下拉列表)值在填充空数组时不会消失

Knockout.js oracle JET Combobox(下拉列表)值在填充空数组时不会消失,knockout.js,oracle-jet,Knockout.js,Oracle Jet,我正在使用Oracle JET combobox,并在某些事件发生变化时动态地为其赋值。 将空数组指定给下拉列表时,它仍然显示旧的选定值(如图4所示) 下面是我编写的代码: HTML: 将其值绑定到一个可观察的对象,如self.newDropDownValue 在更改事件处理程序时,将其设置为空self.newDropDownValue(“”) 如果不想使用单独的变量,则可以使用组件的reset()方法 document.getElementById('id2').reset(); 上述方法将

我正在使用Oracle JET combobox,并在某些事件发生变化时动态地为其赋值。 将空数组指定给下拉列表时,它仍然显示旧的选定值(如图4所示)

下面是我编写的代码: HTML:


将其值绑定到一个可观察的对象,如
self.newDropDownValue

在更改事件处理程序时,将其设置为空
self.newDropDownValue(“”

如果不想使用单独的变量,则可以使用组件的
reset()
方法

document.getElementById('id2').reset();
上述方法将删除用户输入的值。请参阅下面的链接


我自己也有类似的问题。我找到了一个解决方法,但还没有调查它为什么有效,但它确实有效

  • 元素的
    属性绑定到
    可观察数组
    。即使它不是
    元素,仍然要使用数组
  • 重置时,将值设置为空数组,如下所示:
    self.value([])
  • 确保您的
    元素具有
    占位符
    属性,否则,这将不起作用

  • 我很确定这种行为不是故意的,但它确实适合我。

    我已经尝试过了,它会创建一个“空白”选项。行为应该是,它不应该创建任何选项。您可以将
    元素
    禁用
    。创建一个自定义逻辑,将布尔值绑定到选项数组的长度,例如:
    selectDisabled=()=>self.value().length
    然后将元素的
    disabled
    属性绑定到该属性:
    self.newDropDown1 =ko.observableArray([{name:'Chrome',value:1},
                                        {name:'Opera' ,value:0},
                                        {name:'Firefox' ,value:2}]);
    
    self.newDropDown =ko.observableArray([{name:'Yes',value:1},
                                        {name:'No' ,value:0}]);
    
    self.myOnChange = function() {
                  self.newDropDown([]);
                }
    
    document.getElementById('id2').reset();