我想在第二个组合中设置选项,具体取决于前一个组合中的选定值(或某些组ID)(richselect控件):
rows:[
{
view:"richselect", label:"Country",
id:'rich_1', value:1,
options:countries,
on:{onChange:function(newv){
$$("combo_1").getList().filter( function(obj){
if (obj.country == newv) console.log(obj.value);
return obj.country == newv;
});
}}
},
{
view:"combo", id:"combo_1", label:"Name",
options:cities
}
]
过滤功能有效,但我发现显示时选项是刷新的。我没有为组合找到类似onBeforeShow
的事件,所以问题是 - 有没有办法过滤这些选项?
答案 0 :(得分:2)
Combo使用过滤本身来调整结果,这会禁用自定义过滤逻辑的结果。
请检查下一个代码段http://webix.com/snippet/da3923b5
它使用了更复杂的逻辑,这里我们有一个中间数据集合。
var cDC = new webix.DataCollection({data:cities});
现在,第一个组合过滤集合,每次集合更改时,第二个组合将重新加载集合中的数据。
webix.ui({
rows:[
{
view:"richselect", label:"Country",
id:'rich_1', value:0,
options:countries,
on:{
onChange:function(newv){
cDC.filter( function(obj){
if (obj.country == newv) console.log(obj.value);
return obj.country == newv;
});
}
}
},
{
view:"combo", id:"combo_1", label:"City",
options:{ data: cDC }
}
]
});
如果你有兴趣,combo还有onBeforeShow事件处理程序
{
view:"combo", id:"combo_1", label:"City",
options:{
data: cDC,
on:{ onBeforeShow:function(){ webix.message("show"); }}
}
}