SWIG JS过滤器"last"



source json:

{
"rss": {
    "$": {
        "version": "2.0",
        "xmlns:metadata": "http://rss.rbc.ru/metadata",
        "xmlns:rbc_news": "http://purl.org/rss/1.0/modules/content/",
        "xmlns:wfw": "http://wellformedweb.org/CommentAPI/"
    },
    "channel": {
        "item": [
            {...},
            {...},
            {...},
            {...},
            {...}
        ]
    }
}
}


Swig js模板,用于处理源json:

{%set root = rss.channel %}
{
"items":[
    {% for item in root.item %}
        {
            "category":"{{item['metadata:category']}}",
            "title":"{{ item.title }}"
        }{% if item|last %},{% endif %}
    {% endfor %}
]
}
我不知道如何选择最后一项。在输出中,似乎每个项都是rss.channel.item上下文中的最后一项和第一项。所以输出是:
 { "items":[ 
            { 
              "category":"autonews", 
              "title":"sometitle1" 
            }, 
            { 
              "category":"sport", 
              "title":"sometitle2" 
            }, 
            { 
              "category":"realty", 
              "title":"sometitle3" 
            },...

是必须的,逗号只会出现在最后一项之后。我无法解决这个问题:

{% if item|last %},{% endif %}

Swig的文档说:

// my_arr = ['a', 'b', 'c']
{{ my_arr|last }}
// => c

所以我想知道是什么错了?

"|last"是一个过滤器,它使您更容易处理返回值。如果你想在最后一件东西进来的时候做某事,你应该使用"{% if循环。最后要做的%}件事{% endif %}"

请参阅http://paularmstrong.github.io/swig/docs/tags/

最新更新