SAPUI5表达式绑定:“ true”是字符串类型,属性“已阻止”应为布尔值

时间:2019-07-01 08:40:05

标签: sapui5 sap

我有一些实现,其中我遍历对象数组并为每个对象创建一个新的GenericTile。我需要根据对象的blocked属性来设置图块的Count属性。

我尝试为此使用一些表达式绑定,但出现以下错误:

  

“ true”的类型为字符串,对于的属性“ blocked”应为布尔值   元素sap.m.GenericTile#exampleTile0

由于我的数据不在模型中,而在对象中,因此我尝试在表达式绑定中使用一些变量。在这种情况下,我没有找到任何示例,因此我不确定这是否还可以工作,还是不确定是否需要创建一个新模型(至少错误文本听起来像对变量的解释一样)。

这是我的相关代码:

for (var i = 0; i < aExampleData.length; i++) {
    var oNewTile = new GenericTile("exampleTile" + i, {
        tileContent: new sap.m.TileContent({
            content: new sap.ui.layout.HorizontalLayout({
                content: [
                    new sap.m.Title({
                        text: aExampleData[i].Name
                    }),
                    new sap.m.Text({
                        text: aExampleData[i].Description
                    }),
                    new sap.m.HBox({
                        items: [
                            new sap.m.Text({
                                text: that.getResourceBundle().getText("count")
                            })
                            new sap.m.Text({
                                text: aExampleData[i].Count
                            })
                        ]
                    })
                ]
            })
        }),
        blocked: "{=" + aExampleData[i].Count + "> 0 ? false : true }"
    });

    this.byId(xxx).addItem(oNewTile);
}

有人可以给我提示如何解决这个问题吗?谢谢!

3 个答案:

答案 0 :(得分:0)

我忘记了我只能在循环中使用一些变量,例如:

if (aExampleData[i].Count > 0) {
    bBlocked = false;
} else {
    bBlocked = true;
}

...并将其分配给blocked属性。

但是,找出变量是否也可以在表达式绑定中使用以及如何解决错误仍然很有趣。

答案 1 :(得分:0)

替换

blocked: "{=" + aExampleData[i].Count + "> 0 ? false : true }"

使用

blocked: !(aExampleData[i].Count > 0)

此处使用表达式语法毫无意义,因为不涉及绑定

答案 2 :(得分:0)

实质上,为XML视图引入了表达式绑定

  

在SAPUI5 XML模板的上下文中,表达绑定特别有用,在该模板中,假定带有模板的XML视图,因此SAPUI5控制器很自然地放置了不可用的自定义格式化程序功能。 Source

在JS中,您可以将格式化程序功能用于绑定值,或者就像Ji aSH所说的那样仅用于指示可变条件