在模板上访问app宽对象

时间:2014-08-13 07:24:58

标签: ember.js handlebars.js

我已经定义了一个Ember对象,它只包含一些函数。我想在我的模板中访问这些功能,但不知何故它不起作用。没有给出错误,也没有任何日志声明。

App.AuthManager = Ember.Object.extend({
    isAuthenicated : function () { 
        return true;
    }
}).create();

现在在我的模板中我想

{{#if App.AuthManager.isAuthenticated}}
    <ul>...</ul>
{{/if}}

if语句中的标记总是打印出来,这里没有把手解释对象函数吗?

1 个答案:

答案 0 :(得分:4)

Handlebars Basic指南指出

Each template has an associated controller: this is where the template finds the properties that it displays.

这意味着模板的范围是控制器,只有控制器,您不能直接从把手模板访问应用程序中的其他对象。

我认为您尝试实现的目标可以使用registerinjectEmber.Application class函数完成。

在控制器中注入AuthManager对象后,您应该能够在模板中访问属性isAuthenticated,如下所示:

{{#if isAuthenticated }}
  <ul>....</ul>
{{/if}}

我的答案来自本网站:http://madhatted.com/2013/5/26/communication-between-controllers-in-ember-js