我正在使用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?
谢谢!
答案 0 :(得分:1)
想出了我自己的问题,我使用{{render}}
来缩小范围在我的布局中,我从{{render}}切换到{{partial}}
<div>
{{partial common/navigation}}
{{output}}
</div>
一切都很好。
来自ember.js文档 - &#34; {{partial}}不会更改上下文或范围。它只是将给定的模板与当前范围放在一起。&#34; http://emberjs.com/guides/templates/rendering-with-helpers/