我正在編寫一個混合應用程序,其中包含一些服務器處理和用Ember實現的主UI部分。Ember:共同財產的地方?
所有與認證有關的功能都是基於服務器的,所以當加載頁面時我已經知道(基於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幫手 - 不工作爲好,助手不會被調用都:
Ember.Handlebars.registerBoundHelper 'userId', ->
userId = jQuery.cookie 'userId'
if userId == 'undefined'
userId = null
else
userId = parseInt userId, 10
userId
你可能想看看[這個問題](http:// stackoverflow。com/questions/16070390/ember-js-current-user-access-global-variable-from-controller)它有點類似於 – MilkyWayJoe 2013-05-08 13:57:12
類似但不完全。但它看起來像我可以通過將數據附加到全局應用程序對象來解決它。 – Guard 2013-05-08 18:35:37