SAPUI5自定义控件绑定
问题描述:
我想弄清楚如何将数据模型绑定到自定义控件。我在这里搜索了一些类似的问题,但他们似乎不符合我想要做的。也许我的方法是错误的。SAPUI5自定义控件绑定
无论如何,我已经创建了一个Plunkr(https://plnkr.co/edit/UghwOObcDn1oRndOpCeJ)来演示。创建两个输入字段,其中一个位于扩展sap.m.Panel的自定义控件上。我试图将名称和启用属性绑定到两个输入字段。简单sap.m.Input没有问题,但在自定义控件中的一个MyPanel没有这样的运气。 名称和已启用两个输入字段的属性应该在按下按钮时更改。
对于自定义控制我试图绑定属性传递给值和启用了嵌入式输入场的性质如可在App.view.xml看到。
如果我更改了MyPanel.js如下:
value: mSettings.value,
enabled: mSettings.enabled
到
value: '{/name}',
enabled: '{/editing}'
一切工作正常。
任何帮助或方向将不胜感激。
答
您必须在自定义控件中定义“值”和“启用”属性。要获得绑定工作,您需要在扩展控件中使用自定义setter/getter方法。这些方法在绑定更新时被调用。
这里是更新link
sap.m.Panel.extend('my.App.MyPanel', {
constructor: function(mSettings) {
sap.m.Panel.apply(this, arguments);
this.ef = new sap.m.Input({
width: '100px',
value: mSettings.value,
enabled: mSettings.enabled
});
this.setAggregation('_ef', this.ef);
},
metadata: {
properties: {
enabled: { type: 'boolean', defaultValue: true },
value: { type: 'String', defaultValue: "" }
},
events: {
},
aggregations: {
_ef: { type: 'sap.m.Input', multiple: false, visibility: 'hidden' }
}
},
init: function() {
},
renderer: function(oRM, oControl) {
oRM.renderControl(oControl.getAggregation('_ef'));
},
setValue: function (sValue) {
this.ef.setValue(sValue);
},
setEnabled: function (bValue) {
this.ef.setEnabled(bValue);
},
getValue: function(){
return this.ef.getProperty("value");
},
getEnabled: function(){
return this.ef.getProperty("enabled");
}
});
嗯。我将你的代码复制到Plunker中。仍然没有去。 – Terry
我已经更新了代码,应该立即工作.. –