如何在sapui5中实现挂起数据绑定(声明性)?

时间:2015-04-14 10:22:14

标签: data-binding sapui5

通常需要在一个视图中实现一些相互依赖的控件。

例如:

国家/地区选择框,根据选择(请求初步选择),另一个选择框将显示区域列表。

我更喜欢声明性解决方案,但似乎不可能。 我也会避免使用控件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;
        }
    }
}); 

有一个属性绑定到国家/地区选择,格式化程序被“误用”以绑定聚合。

有没有“更清洁”的解决方案?

1 个答案:

答案 0 :(得分:0)

是,

使用Region选择框的onChange事件。如果更改,请使用筛选器中的当前区域值重新绑定国家/地区的聚合。 不幸的是,据我所知,UI5不支持过滤器中的声明性绑定。 (任何核心开发人员都在阅读此内容吗?)