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
我自己也遇到过类似的问题。我找到了一个变通方法,但还没有调查它为什么有效,但它确实有效。
- 将
<oj-select-one>
元素的value
属性绑定到observableArray
。即使它不是<oj-select-many>
元素,仍然要使用数组 - 重置时,将值设置为空数组,如:
self.value([])
- 请确保您的
<oj-select-one>
元素具有placeholder
属性,否则,这将不起作用
我很确定这种行为不是故意的,但它对我来说是有效的。