【问题标题】:SAPUI5: Example for a composite control?SAPUI5:复合控件的示例?
【发布时间】:2018-04-17 14:30:30
【问题描述】:

我正在寻找一个复合控件的好例子。 我当前的问题是,我计划绑定一个简单的值(例如字符串),该值将在复合控件内的其他一些控件中重用。

以下代码似乎不正确:

metadata : {
    properties : {
        "head" : {type : "string", defaultValue : ""},
        ...
    },
},

init : function() {

... some control with content ...
content : [
new sap.m.Label({text : this.getHead()})
]
...

我调用复合控件的计划如下所示: var oTemplate = new MyControl({ head : "{Name}" }); 例如在列表中使用模板。

绑定可能有效,但由于我在“init”部分构建控件,因此看起来该属性未初始化且不会自动更新。

进一步的实验(不起作用):

jQuery.sap.declare("StrangeControl");
sap.m.HBox.extend("StrangeControl", {

    metadata : {
        properties : {
        },
        aggregations : {            
            input        : {type : "sap.m.Input", multiple : false},
        }
    },

    // will be called during creation time
    init : function() {
        sap.m.HBox.prototype.init.call(this);
        this.addItem(this.getAggregation("input"));
    },    

    renderer : {},

    onAfterRendering : function() {
        if (sap.m.HBox.prototype.onAfterRendering!==undefined) {
            sap.m.HBox.prototype.onAfterRendering.call(this);
        }
    }
});

我假设以这种方式使用控件:

new StrangeControl({
   input : new sap.m.Input({value : "test"})
})

但是在initinput期间没有定义(==null)。提到的示例https://github.com/SAP/openui5/blob/master/src/sap.m/src/sap/m/SelectDialog.js 似乎以不同的方式处理“项目”,但对我来说不清楚如何。


同时存在文档(至少在 OpenUI5beta SDK 中)。 https://openui5.hana.ondemand.com/#/topic/c1512f6ce1454ff1913e3857bad56392

如果链接不起作用,请在“开发人员指南”部分中搜索“复合控件”。

【问题讨论】:

    标签: binding controls sapui5


    【解决方案1】:

    答:只需将您的内部控件添加到隐藏聚合中 - 它会自动免费获取所有数据绑定,您只需相应地绑定该控件的属性/聚合。

    B:您还可以覆盖外部控件的设置器,然后调用内部控件的设置器以传播值。

    setHead : function(oValue) {
      return this.getAggregation("_myHiddenInnerControl").setValue(oValue);
    }
    

    仍然需要将内部控件添加到聚合中,以避免内存泄漏(否则您必须确保在退出方法中清除所有内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多