4

我正在尝试自学闭包模板。我做了一个简单的文件 simple.soy:

{namespace examples.simple}

/**
 * says hello to the world
 * @param? name Optional parameter specifying who you are greeting.
 */
{template .hiWorld}
  Hello
  {if $name}
   {$name}!
  {else}
   world!
  {/if}
{/template}

然而,在我编译和调用之后document.write(examples.simple.hiWorld();,显示的字符串在“Hello”和“world”之间没有空格:Helloworld!

为什么不?

4

1 回答 1

6

闭包模板处理线连接如下:

在模板的正文中,您可以根据需要缩进行,因为模板编译器会删除行首和行尾的所有行终止符和空格,包括行剩余注释之前的空格。编译器完全删除仅包含空格的空行。根据以下启发式连接连续的行:如果连接位置在任一侧与模板或 HTML 标记接壤,则这些行将无空格连接。如果连接位置的任一侧都没有与模板或 HTML 标记接壤,则这些行将用一个空格连接。

要在闭包模板中需要空格的地方添加空格,请使用特殊字符命令{sp}。如果插入了不需要的空间,您可以使用命令将其删除{nil}。有关线连接示例,请参阅features.soy

simple.soy将变为:

{namespace examples.simple}

/**
 * says hello to the world
 * @param? name Optional parameter specifying who you are greeting.
 */
{template .hiWorld}
  Hello{sp}
  {if $name}
   {$name}!
  {else}
   world!
  {/if}
{/template}
于 2012-06-08T02:00:58.100 回答