ember - 模板条件的上下文

时间:2015-09-03 15:18:42

标签: ember.js

模板或组件中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文档,但未解决此基本问题。

2 个答案:

答案 0 :(得分:1)

如果您使用正确的Controller定义属性:

showBackButton: true

然后您就可以在Route模板中访问它了:

{{showBackButton}} // true

Demo here. Code here.

答案 1 :(得分:1)

如果if语句在组件模板中,则showBackButton必须是组件的属性。组件无法从应用程序路由或控制器中找到此属性。

在您的情况下,您需要通过其他几个路径更改此属性,因此您可以在应用程序中使用此属性,然后将该属性传递给组件。从其他路由,您可以获取应用程序控制器并修改属性。 (或)您可以简单地将属性注入所有路由和组件。

在控制器中定义属性showBackButton: true