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

Data binding 如何在sapui5(声明性)中实现挂起的数据绑定?,data-binding,sapui5,Data Binding,Sapui5,通常需要在一个视图中实现一些相互依赖的控件 例如: 一个国家/地区选择框,根据选择请考虑初始选择另一个选择框将显示区域列表 我更喜欢声明式解决方案,但似乎不可能。 我也会避免使用控件ID,因为如果在集合中使用这样的依赖项,那么这似乎不可用,因为您将拥有动态ID 我当前的解决方案是这样工作的: var oCountry = new sap.m.Select({ name : "Country", selectedKey : "{model>/CountryKey}",

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

例如:

一个国家/地区选择框,根据选择请考虑初始选择另一个选择框将显示区域列表

我更喜欢声明式解决方案,但似乎不可能。 我也会避免使用控件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;
        }
    }
}); 
有一个属性绑定到国家/地区选择,格式化程序被错误地用于绑定聚合

有清洁剂吗?

使用区域选择框的onChange事件。更改后,使用筛选器中的当前区域值重新绑定国家/地区的聚合。
不幸的是,据我所知,UI5不支持过滤器中的声明性绑定。任何核心开发人员都会读到这篇文章?

,但这对第一个选择框中的初始值不起作用。如果用户选择了某个内容,而不是在首次加载控件时,则会触发onChange。您是对的。但是由于用户没有选择地区,可能您最初不需要为国家设置绑定。取决于实际情况。@user3783327您必须在视图的onBindingChange函数中调用国家/地区的fireChange函数。这意味着当用户进入您的对象页面并且对象绑定到您的视图时,您必须提取国家值并使用该值过滤区域元素中的值。