art-template icon indicating copy to clipboard operation
art-template copied to clipboard

if 判断中无法使用 helper/function

Open re54k opened this issue 7 years ago • 5 comments

比如判断一个字符串trim之后是否为空,然后再考虑是否输出:

{{if someStr | trim}}
<div>{{someStr | trim}}</div>
{{/if}}

这样写 if 永远为 false 不会输出任何内容, 改为 {{if trim(someStr)}} 则会报错, 所以这种需求如何实现呢?

re54k avatar Jul 20 '18 10:07 re54k

三元表达式可以解决问题吗

aui avatar Mar 11 '19 05:03 aui

@aui 我正遇到这个问题,尝试过三元表达式,不清楚这种写法对不对: {{ someStr | trim ? 'aaa' : 'bbb' }} 这种情况下,调试时,trim函数并没有进去,页面直接输出'aaa' 如果加了括号: {{ (someStr | trim) ? 'aaa' : 'bbb' }} 调试时,trim函数进去了,但是someStr却是undefined

所以我感觉是在语法规则上有些条件限制之类的

请问一下,这种情况下有没有什么解决思路,谢谢

lrbmike avatar Apr 25 '19 02:04 lrbmike

@lrbmike 过滤器语法输出文本,不能用做运算, 你只能在trim 函数里面做运算,然后return出来显示。

mcclcm avatar Apr 25 '19 07:04 mcclcm

@mcclcm 所以我感觉过滤器只能够输出内容到页面,而使用了过滤器就不能够再做其他的操作,例如if判断等。甚至return出来的值也不能够赋值到一个变量。

lrbmike avatar Apr 25 '19 08:04 lrbmike

同情况,有的时候需要做了运算再用if 可是{{if}}并不支持 永远false

fufenghua avatar May 31 '19 03:05 fufenghua