模板标签的位置限制
和通常基于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示例代码,通过练习掌握在模板中模板标签的合法作用点。