oracleJET组合框(下拉列表)值不会在填充空数组时消失



dropdowns的屏幕截图我使用Oracle JET组合框,并在某个事件发生变化时为其动态赋值。当一个空数组被分配给下拉列表时,它仍然显示旧的选定值(如图4所示(。

下面是我写的代码:HTML:

<oj-select-one id="id1"  options="[[newDropDown1]]" 
options-keys.label="name" options-keys.value="value" 
on-value-changed="[[myOnChange]]"  value="">   </oj-select-one>
<oj-select-one id="id2" options="[[newDropDown]]"  
options-keys.label="name" options-keys.value="value"      
value=""  placeholder="select .."></oj-select-one>

JS:

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([]);
}

将其值绑定到类似self.newDropDownValue的可观察对象。

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

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

document.getElementById('id2').reset();

上述方法将擦除用户输入的值。参见以下链接

http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.ojComboboxOne.html#reset

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

  1. <oj-select-one>元素的value属性绑定到observableArray。即使它不是<oj-select-many>元素,仍然要使用数组
  2. 重置时,将值设置为空数组,如:self.value([])
  3. 请确保您的<oj-select-one>元素具有placeholder属性,否则,这将不起作用

我很确定这种行为不是故意的,但它对我来说是有效的。

最新更新