模板或组件中if语句的上下文是什么?
{{#if showBackButton}}
<div>....</div>
{{/if}}
如何/在何处定义showBackButton
?我在应用程序控制器中尝试了它,但它没有找到它。
详情
我有一个名为eea-header.hbs的标题组件。 application.hbs中包含了应用程序可能具有的所有页面(路由)的页面顶部。但是我在标题中有一些条件语句来关闭/打开标题的不同部分。理想情况下,我想在每个路由中定义showBackButton
之类的属性,因为teh route知道每个属性何时为true / false。
我要把它放在路线或控制器中吗?句法?我试过了:
showBackButton: true,
和
showBackButton: Ember.computed(function() {
return true;
}),
和
showBackButton() {
return true;
}),
没有运气。如果答案是控制器,那么所有模板都可以在应用程序控制器中访问这些属性,或者我是否必须在每个控制器中定义它们。
我想要与ember 2.0兼容。
对此基本问题表示歉意,但我已阅读过ember文档,但未解决此基本问题。
答案 0 :(得分:1)
如果您使用正确的Controller
定义属性:
showBackButton: true
然后您就可以在Route
模板中访问它了:
{{showBackButton}} // true
答案 1 :(得分:1)
如果if语句在组件模板中,则showBackButton
必须是组件的属性。组件无法从应用程序路由或控制器中找到此属性。
在您的情况下,您需要通过其他几个路径更改此属性,因此您可以在应用程序中使用此属性,然后将该属性传递给组件。从其他路由,您可以获取应用程序控制器并修改属性。 (或)您可以简单地将属性注入所有路由和组件。
在控制器中定义属性showBackButton: true
。