Ember.js:在渲染模板中访问ApplicationController方法

时间:2014-07-11 15:49:42

标签: javascript ember.js

我正在使用Ember.js并且在渲染模板部分中从我的ApplicationController访问方法时遇到问题。

在我的布局中,我有以下

<div>
   {{ render common/navigation }}
   {{ outlet }}
</div>

在我的应用程序控制器中:

App.ApplicationController = Ember.Controller.extend({
  isAuthenticated: function(){
    return true
  }.property()
});

和common / navigation hbs模板内部:

{{#if isAuthenticated}}
  <a href="#" {{action 'logout'}}>Logout</a>
{{/if}}

问题是isAuthenticated永远不会回归真实

我认为我的假设可能是问题,因为ApplicationController中的方法可用于所有模板 - 这是错误的吗?

如何从公共/导航模板访问isAuthenticated?

谢谢!

1 个答案:

答案 0 :(得分:1)

想出了我自己的问题,我使用{{render}}

来缩小范围

在我的布局中,我从{{render}}切换到{{partial}}

<div>
  {{partial common/navigation}}
  {{output}}
</div>

一切都很好。

来自ember.js文档 - &#34; {{partial}}不会更改上下文或范围。它只是将给定的模板与当前范围放在一起。&#34; http://emberjs.com/guides/templates/rendering-with-helpers/