我试图了解Discourse中的EmberJS模板约定。
这是app/assets/javascripts/discourse/templates/discovery/categories.hbs
{{#discovery-categories refresh="refresh"}}
{{component controller.categoryPageStyle
categories=model.categories
latestTopicOnly=controller.latestTopicOnly
topics=model.topics}}
{{!-- my-template --}}
{{/discovery-categories}}
discovery-categories
和component
的含义是什么?
例如,我想插入my-template
来扩展categories.hbs
,我应该用什么约定来创建带有模板的文件?
答案 0 :(得分:1)
discovery-categories
是组件的名称
使用组件名称静态调用。
而在第二行'component'是一个模板助手,它使用通过属性controller.categoryPageStyle
指定的名称动态加载组件。
3.my-template是yield块,如果它的产量,你可以拥有组件discovery-categories
的上下文。
例如。如果discovery-categories
有属性foo
,您可以编写类似
{{#discovery-categories refresh="refresh" foo="Some Text"}}
{{component controller.categoryPageStyle
categories=model.categories
latestTopicOnly=controller.latestTopicOnly
topics=model.topics}}
{{foo}}
{{/discovery-categories}}