我有一个.html文件,其中包含以下代码:
<script type="text/x-handlebars" id="social">
I'm partial content: {{label}}<br>
</script>
我进一步使用:
{{partial 'social' label="x"}}
上面是呈现文本“我是部分内容:” ...但不是从键“ label”传递的值('x')的原因
我不知道为什么这行不通?使用Handlebars 2.0和Ember 1.9(我知道旧版本,但是我正在从其他人那里编辑现有工具)。
在大多数情况下,您可以想到一个有点像C宏的部分,因为它在模板编译期间被其内容替换了。您不会像使用label="x"
那样使用绑定/自变量调用局部函数。而是,部分从呈现它的模板的范围解析其变量。换句话说,{{partial}}
只是将给定模板放在当前范围内。
因此,如果您在路由模板中使用{{partial}}
,则需要在路由的相应label
上设置controller
的值(这是路由模板解析其变量的地方,即模板)。您可以在route
文件的setupController
挂钩中或在controller
的init
函数中,或在控制器的计算属性中进行此操作,等等。
[如果在组件模板中使用{{partial}}
,则需要在组件的支持javascript文件中或通过将label
作为组件参数来设置label
的值。但是到那时,您应该只使用组件而不是局部组件。
请注意,在更高版本的Ember框架中,{{partial}}
不是倡导的路径。组件是更好/更强大的可重用构造。如果您在此处构建了组件而不是部分组件,则可以完全传递label
值。