我这里的列表项模板有什么问题?

What's wrong with my list item template here?

如果设置了 Begda,我想显示“-”,否则只显示“”。当设置 Begda 时,输出显示 "NaN",否则它会正确显示类型。所以三元运算符有效,但格式化程序不起作用。 Begda 字段包含实际日期对象:

this._oSelectedTrainingsModel.getData()[0].Begda
15:31:37.916 Date 2016-09-17T00:00:00.000Z

var oItemTemplate = new sap.m.StandardListItem({
                title: "{Title}",
                description: "{= ${Begda} ? ${Type} - ${ path: 'Begda', type: 'sap.ui.model.type.Date', formatOptions: { style: 'medium' }} : ${Type} }",
                icon: "{icon}",
                iconInset: false
            });

我也用相同的 'NaN' 输出试过这个:

var oItemTemplate = new sap.m.StandardListItem({
            title: "{Title}",
            description: "{= ${Begda} ? ${Type} - ${Begda}.toLocaleDateString() : ${Type} }",
            icon: "{icon}",
            iconInset: false
        });

问题是框架试图对给定值应用减法。如果要在表达式中包含 - 字符,请执行字符串连接 + '-' +

还建议将复杂的计算放在括号中。 这是固定代码(括号是可选的):

var oItemTemplate = new sap.m.StandardListItem({
            title: "{Title}",
            description: "{= ${Begda} ? (${Type} + '-' + ${ path: 'Begda', type: 'sap.ui.model.type.Date', formatOptions: { style: 'medium' }}) : ${Type} }",
            icon: "{icon}",
            iconInset: false
        });

请注意,表达式绑定应该只用于简单的逻辑,这个似乎更复杂,可以移到格式化程序函数中。