【问题标题】:emberjs recipes : before/action filter, controller namespace, shared objectemberjs 配方:之前/动作过滤器、控制器命名空间、共享对象
【发布时间】:2013-02-19 14:19:41
【问题描述】:

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

我正在寻找以下问题的“食谱”或模式:

  1. 拥有/模拟“过滤器之前”,例如在没有当前用户时重定向用户

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

  3. 何时何地加载和存储共享对象,例如 currentUser ?它应该随处可用,例如“rails” current_user(我们现在使用需求或 App.set(),但对它并不满意

  4. 在“文档”DOM 元素上捕获事件的最佳方法,而不是 emberjs 应用程序视图(例如隐藏/显示类似 facebook 用户菜单的菜单):我单击图标以显示它,我单击 DOM 文档以隐藏它(有时在我的 ember 应用程序之外......

【问题讨论】:

    标签: javascript filter ember.js namespaces dom-events


    【解决方案1】:

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

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

    我们得到了这个错误: 未捕获的 RangeError:超出最大调用堆栈大小

    【讨论】:

      【解决方案2】:
      1. 您在Ember.Route 上有一个redirect 挂钩。它记录在网站上。

      2. 我不确定这与客户端应用程序有什么关系。我会在后端想象这种过滤器。

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

      4. 也许在ApplicationRoute 中注册一个处理程序并从那里分派路由器事件。

      一些注意事项:

      App.injectApp.register 应该在这样的任何钩子之外调用:

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

      【讨论】:

      • 1.你如何管理自动生成的路线? 2. 您将如何在同一个客户端应用程序中管理来宾/管理员/成员角色的不同视图/模板?当我加载公共视频时,我不会拥有与管理员属性相同的信息...
      • 1.如果您需要重定向,您应该覆盖任何自动生成的路由 2. 好吧,如果您希望相同的页面对于不同的角色看起来不同,您可以使用 {{#if isAdmin}} 和内部 {{partial}} / {{render}} 不同的模板
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      相关资源
      最近更新 更多