Meteor开发平台入门 互动版

模板标签的位置限制

和通常基于HTML字符串的模板系统不同,Spacebars能够理解HTML语法 并且被设计为自动更新DOM。因此,并不能在模板中任意放置模板标签。 例如,你不能在本该出现HTML标签名的地方使用模板标签:

<!--下面的用法是错误的-->
<template name="wrong">
  <{{tagname}}>...</{{tagname}}>
</template>

通常在模板中,模板标签有以下三种用法:

≡ 元素层级

例如,一个合法的HTML标签可以出现的位置,就可以使用模板标签:

<!--可以理解为模板标签出现在div标签的位置-->
<template name="normal">
  <!--div>...</div-->
  {{> tpl}}
</template>

≡ 属性层级 —— 作为HTML标签属性值

模板标签可以作为HTML标签的属性值或属性值的一部分。例如:

<template name="attrdemo">
  <div class="basicClass {{extClass}}">...</div>
  <input type="checkbox" checked={{checked}}>
</template>

≡ 属性层级 —— 作为HTML标签属性集

模板标签也可以作为HTML标签的属性集。例如:

<div {{attrs}}>...</div>

这要求标识符attrs对应的helper应当返回一个JSON对象,以便Spacebars将 键/值对映射为HTML标签的属性。例如,当helper函数返回:{{class:'ezcls',id:'abc'}}, 那么上面的模板将展开为:

<div class="ezcls" id="abc">...</div>

执行以下命令复位test应用、删除源文件:

~/test$ meteor reset↵ ~/test$ rm -rf \*↵

执行以下命令拷贝tpl-attrs示例代码、运行并查看运行结果:

~/test$ cp ~/demos/tpl-attrs/* .↵ ~/test$ meteor↵

理解并修改tpl-attrs示例代码,通过练习掌握在模板中模板标签的合法作用点。