emberjs配方:before/action filter、控制器命名空间、共享对象

emberjs recipes : before/action filter, controller namespace, shared object

本文关键字:控制器 命名空间 共享 对象 filter action 配方 before emberjs      更新时间:2023-09-26

我们用rails 4 beta和emberjs 1.0.0rc1启动了一个项目。

我正在寻找";配方";或以下问题的模式:

  1. 具有/模拟";"滤波器之前";,例如,当没有当前用户时重定向用户

  2. 具有控制器和模型命名空间,如/admin/videos|/videos|/member/videos,用于根据您的角色访问不同的集合(例如,admin/videos返回所有视频,/videos-only公共视频和/member/videos-orly我的视频…)

  3. 何时何地加载和存储共享对象,例如currentUser?它应该随处可见,比如";轨道";current_user(我们现在使用needs或App.set(),但对它不太满意

  4. 在";文件";DOM元素,而不是emberjs应用程序视图(例如隐藏/显示类似于facebook用户菜单的菜单):我点击图标来显示它,我点击DOM文档来隐藏它(有时在我的ember应用程序之外…

我们正在尝试这样做,例如:

App.ApplicationRoute = Ember.Route.extend 
  setupController: ->
    App.register('controller:currentUserController', App.CurrentUserController );
    App.inject('controller', 'gobalUser', 'controller:currentUserController'); 

我们得到的是错误:未捕获范围错误:超过的最大调用堆栈大小

  1. 您在Ember.Route上有一个redirect挂钩。它记录在网站上。

  2. 我不确定这与客户端应用程序的关系。我可以想象这种过滤器在后台。

  3. needsApp.inject绝对是您想要的。您应该有一个currentUser控制器,并要求/在所有控制器上注入它。

  4. 也许可以在ApplicationRoute中注册一个处理程序,然后从那里调度路由器事件。

一些注意事项:

App.injectApp.register应该在任何钩子之外调用,如下所示:

App.inject('controller', 'gobalUser', 'controller:currentUser');