【发布时间】: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
如果链接不起作用,请在“开发人员指南”部分中搜索“复合控件”。
【问题讨论】: