铁路由器控制器继承模式

时间:2014-02-13 21:13:36

标签: javascript meteor iron-router

假设我在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和task路由器控制器文件找不到json控制器。如何在不复制多个文件中的控制器代码的情况下继承JsonController?

2 个答案:

答案 0 :(得分:2)

文件按文件名顺序加载。我当然只是把控制器放在同一个文件中 - 按照你需要的顺序。

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

答案 1 :(得分:1)

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

来自Meteor文档

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

/ lib
| __ / base /
| __ base_router_controllers.js
| __ post_router_controllers.js
| __ task_router_controllers.js

将基本RouteController放在更深的目录中。