我创建了一个自定义磁贴,但我遇到了一些我不理解的困难。 到目前为止我有什么
自定义图块:
jQuery.sap.declare("myControls.myMenuTile");
jQuery.sap.require("sap.m.CustomTile");
sap.m.CustomTile.extend("myControls.myMenuTile", {
metadata: {
properties: {
"header": {
type: "string",
defaultValue: "myMenuTile"
},
"icon": {
type: "string",
defaultValue: "sap-icon://shipping-status"
},
// some more properties here...
},
},
// will be called during creation time
init: function() {
sap.m.CustomTile.prototype.init.call(this);
this.addStyleClass("myMenuTileClass");
// Header text
var txt = new sap.m.Text({
textAlign: "Center"
});
txt.addStyleClass("myMenuTile_Text");
txt.bindProperty("text", "header"); // --> POINT OF INTERREST <--
var textFlex = new sap.m.FlexBox({
fitContainer: true,
alignItems: "Center",
justifyContent: "Center",
items: [txt]
});
textFlex.addStyleClass("sapUiTinyMargin");
// some more code here...
var flexBox = new sap.m.FlexBox({
direction: "Column",
fitContainer: true,
height: "100%",
width: "100%",
class: "sapUiTinyMargin",
items: [textFlex]
});
this.setContent(flexBox);
}
部分观点:
<TileContainer id="tileContainer"
tiles="{path: '/Row'}"
style="width: 100%;"
>
<!--<StandardTile icon="{ICON}"
title="{TEXT}"
press="onTilePressed"
/>-->
<ctrl:myMenuTile header="{TEXT}"
icon="{ICON}"
press="onTilePressed"
class="sapUiTinyMargin"
/>
</TileContainer>
绑定字段TEXT和ICON位于从数据库加载的sap.ui.model.xml.XMLModel中。它们是大写的,因为Oracle使colums成为大写。 当我使用StandardTile时,TEXT和ICON正确显示。当我使用自定义图块时,没有文字,也没有显示图标。
但是我发现,当我改变这条线时(参见中间点)
txt.bindProperty("text", "header");
到
txt.bindProperty("text", "TEXT");
显示正确的文字。 据我了解数据绑定,我想在属性头上而不是在数据库字段上创建绑定,这样我就可以将模型的任何文本列绑定到header属性。
我错过了什么?感谢您的帮助。
祝你好运 Jochen
答案 0 :(得分:2)
为什么要绑定自定义标题中的属性?将模型绑定到视图中的控件时,控件将接收该值。因此,没有必要再次绑定它。
尝试使用txt.bindProperty...
替换以下行txt.setText(this.getHeader())
。