我正在编写一个混合应用程序,其中包含一些服务器处理和使用 Ember 实现的主要 UI 部分。
所有与身份验证相关的功能都是基于服务器的,因此当页面加载时,我已经知道(基于 cookie)用户是否经过身份验证。
简而言之 - 在客户端,我有一个userId
cookie,如果设置了它,那么用户就通过了身份验证。
现在我需要让所有模板都可以使用这些数据。
我为应用程序模板解决了它(CoffeeScript 中的所有代码,但那里的语言没有什么特别之处):
路线
ApplicationRoute = Ember.Route.extend
setupController: (controller) ->
userId = jQuery.cookie 'userId'
if userId == 'undefined'
userId = null
else
userId = parseInt userId, 10
controller.set 'userId', userId
控制器
ApplicationController = Ember.Controller.extend
userId: null
最后,模板
<strong>
{{#if userId}}
userId: {{userId}}
{{else}}
No user
{{/if}}
</strong>
这适用于应用程序模板,但如果我将它移动到index
模板,它总是说“没有用户”(我希望控制器有一些原型链遍历)。
我尝试将其移至 boud helper - 效果不佳,根本没有调用 helper:
Ember.Handlebars.registerBoundHelper 'userId', ->
userId = jQuery.cookie 'userId'
if userId == 'undefined'
userId = null
else
userId = parseInt userId, 10
userId