通常需要在一个视图中实现一些相互依赖的控件。
例如:
国家/地区选择框,根据选择(请求初步选择),另一个选择框将显示区域列表。
我更喜欢声明性解决方案,但似乎不可能。 我也会避免使用控件ID,因为如果在集合中使用这样的依赖项(在那里你会有动态ID ......),这似乎是不可用的。
我目前的解决方案是这样的:
var oCountry = new sap.m.Select({
name : "Country",
selectedKey : "{model>/CountryKey}",
items : {
path : "otherModel>/CountrySet",
template : new sap.ui.core.Item({text : "{otherModel>CountryName}", key : "{otherModel>CountryKey}"})
},
});
var oRegionTemplate = new sap.ui.core.Item({text : "{otherModel>RegionName}", key : "{otherModel>RegionKey}"})
var oCountry = new sap.m.Select({
name : "Region",
selectedKey : "{model>/Region}",
enabled : {
path : "model>/CountryKey",
formatter : function(oValue) {
if (oValue===undefined || oValue === null) {
return false;
}
var that = this;
that.bindAggregation("items", "otherModel>/CountrySet('"+oValue+"')/RegionSet", oRegionTemplate);
return true;
}
}
});
有一个属性绑定到国家/地区选择,格式化程序被“误用”以绑定聚合。
有没有“更清洁”的解决方案?
答案 0 :(得分:0)
是,
使用Region选择框的onChange事件。如果更改,请使用筛选器中的当前区域值重新绑定国家/地区的聚合。 不幸的是,据我所知,UI5不支持过滤器中的声明性绑定。 (任何核心开发人员都在阅读此内容吗?)