0

さまざまな場所で同じ複数値属性を使用するテンプレートがあります。テンプレートが個々の値に適用される前に、属性をフィルタリングしたいという状況に陥ることがよくあります。

私がすることができます:

<#col:{c|<if(cond)><# c.Attribute2 #><endif>};separator=\",\"#>

しかし、それは私が望んでいることではありません。出力には、次のような「スキップされた」エントリを区切るセパレータがあるためです。

2,4 、、、 6 、、 4、5 、、

私はそれを変更することができます

<#col:{c|<if(c.Attribute1)><# c.Attribute2 #>,<endif>};separator=\"\"#>

これはほとんど問題ありませんが、最後の数字の後に追加の区切り文字が表示されます。これは問題にならない場合もありますが(通常、区切り文字が空白の場合)、次の場合もあります。

2,4,6,4,5、

私は時々やることになります:

<#first(col):{c|<if(cond)><# c.Attribute2 #><endif>};separator=\"\"#>
<#rest(col):{c|<if(cond)>,<# c.Attribute2 #><endif>};separator=\"\"#>

ただし、最初のメンバーが条件を満たさない場合、このアプローチは失敗し、最初に追加のセパレーターがあります。

、2、4、6、4、5

誰かが私にもっと良い解決策を与えることができますか?

4

2 に答える 2

1

まず、テンプレート内でロジックを実行しようとしていると思います。「データに基づいて何らかの条件に従ってリストをフィルタリングする」などのことを聞いたときはいつでも、モデルでそのフィルタリングされたリストを計算してからプッシュするときかもしれません。つまり、最初にリストをフィルタリングすると、このようなことが機能する可能性があります。 :

<col:{c | <if(c.cond)>c<endif>}:{c2 | <c2.c.attribute>}>

c2.cは、最初のアプリケーションからcパラメーターにアクセスします

于 2012-12-15T23:31:06.010 に答える
0

「ANTLRGuy」による回答は私の場合は役に立たず、別の回避策を見つけました。ST4で空の文字列を除外するを参照してください

于 2017-08-21T13:17:21.597 に答える