OpenUI5 CustomTile绑定不起作用

时间:2016-11-16 10:05:24

标签: binding sapui5 tile

我创建了一个自定义磁贴,但我遇到了一些我不理解的困难。 到目前为止我有什么

自定义图块:

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

1 个答案:

答案 0 :(得分:2)

为什么要绑定自定义标题中的属性?将模型绑定到视图中的控件时,控件将接收该值。因此,没有必要再次绑定它。

尝试使用txt.bindProperty...替换以下行txt.setText(this.getHeader())