【问题标题】:Iron Router Controller Inheritance PatternsIron Router 控制器继承模式
【发布时间】:2014-02-15 02:36:14
【问题描述】:

假设我在 Meteor 项目中有以下结构

lib/
|_ base_router_controllers.js
|_ post_router_controllers.js
|_ task_router_controllers.js

base_router_controllers.js

JsonController = RouteController.extend({
    action: function() {
        //do things
    }
});

post_router_controllers.js

PostController = JsonController.extend({
    action: function() {
        //do post things
    }
});

task_router_controllers.js

TaskController = JsonController.extend({
    action: function() {
        //do task things
    }
});

如果不将 JsonControlleer 添加到 post_router_controllers.js 和 task_router_controllers.js,则 post 和任务路由器控制器文件无法找到 json 控制器。如何在不复制多个文件中的控制器代码的情况下继承 JsonController?

【问题讨论】:

    标签: javascript meteor iron-router


    【解决方案1】:

    文件按文件名顺序加载。我会简单地将控制器放在同一个文件中——当然是按照你需要的顺序。

    (无论如何,lib 文件夹并不是真正用于路由器的。我通常使用/client/routers/router.js。)

    【讨论】:

    • 确定我可以使用 lib/routers/ -- /client/routers/ 不适用于我的项目,因为我有一些服务器端路由。
    【解决方案2】:

    这是一个对我有用的模式:

    来自 Meteor 文档

    子目录中的文件在父目录中的文件之前加载,因此最深的子目录中的文件首先加载(在lib之后),根目录中的文件最后加载(除了main。 ).*

    /lib
    |__ /基地/
    |__ base_router_controllers.js
    |__ post_router_controllers.js
    |__ task_router_controllers.js

    只需将基础 RouteController(s) 放在更深的目录中即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2013-03-01
      • 1970-01-01
      • 2015-06-05
      相关资源
      最近更新 更多