我对我的一个应用程序视图(InvioceList.view.xml)具有以下代码。
正常工作的代码:
numberState="{= ${invoice>ExtendedPrice} > 50 ? 'Error' : 'Success'}"
控件numberState
的属性ObjectListItem
允许我根据费率更改发票金额的颜色。
但是,有效的代码仅规定两种颜色。我想用三个(绿色的Success
,黄色的Warning
和红色的Error
)做到这一点。因此,为了做到这一点,我尝试了以下方法:
<ObjectListItem
numberState="{= ${invoice>ExtendedPrice} > 20 ? 'Success' : ${invoice>ExtendedPrice} > 50 ? 'Error' : 'Warning'}"
/>`
无法正常工作的代码:
numberState="{= ${invoice>ExtendedPrice} < 20 ? 'Success' : ${invoice>ExtendedPrice} > 60 ? 'Error' : 'Warning'}"
因此,由于我是一个初学者,因此我现在只能识别我正在使用的条件语句是三元运算符或多个条件语句,但是由于某些原因,当使用两个以上的间隔时,它不能正常工作(可能是语法)。
因此,我想了解我在做什么错,或者我可以采用其他什么方式在不使用该属性的情况下做同样的事情。我希望你们中的一些人能对此有所启发。
如果我正确理解了您的问题:
您的间隔定义错误。现在你有
如果价格高于20,请显示成功。如果大于50,则显示错误。否则显示警告。
这些语句将完全按照此顺序检查。
假设您的价格为80。
高于20吗?是的,所以显示成功。无需检查其余部分,因为第一个条件已经匹配。
如果要三个间隔,请不要从中间间隔开始。
<ObjectListItem numberState="{= ${invoice>ExtendedPrice} > 50 ? 'Error' : 20 >= ${invoice>ExtendedPrice} ? 'Warning' : 'Success' }" />
如果您确实想从中间开始,请使您的条件更加严格。
例如,“如果它大于20但小于或等于50,则表示成功”。
<ObjectListItem numberState="{= ${invoice>ExtendedPrice} > 20 && ${invoice>ExtendedPrice} <= 50 ? 'Success' : ${invoice>ExtendedPrice} > 50 ? 'Error' : 'Warning' }" />
&和
但是您知道,它很难调试也很难阅读。我强烈建议您使用formatter function。
您可以调试它(因为它是普通的JavaScript)并编写可读的三元或if / else语句。