铁路由器:何时在this.route()中使用字符串VS符号作为控制器名称

时间:2014-01-26 20:15:33

标签: meteor iron-router

在此示例中,有人可以帮助解释何时使用字符串VS符号作为名称。在我的代码中,我将控制器定义为:

PostShowController = RouteController.extend({
   template: 'userShow'
 });

//为什么不同,我的代码仅适用于PostShowController周围的单引号,但Telescope使用符号方式: https://github.com/SachaG/Telescope/blob/master/lib/router.js

Router.map(function () {

   // provide a String to evaluate later
   this.route('postShow', {
     path: '/:name',
     controller: 'PostShowController'
   });

   // provide the actual controller symbol if it's already defined
   this.route('postShow', {
    path: '/:name',
    controller: PostShowController
   });
});

1 个答案:

答案 0 :(得分:1)

正如在示例中所述(“稍后评估”),当您在“Router.map(...)”之后或某些其他文件中的某个位置定义控制器时,将使用该字符串。
 
考虑到Meteor按特定顺序加载文件,假设您在控制器定义之前加载了路由器中的文件,使用符号会出错,因为控制器不会被定义。

为了避免这个错误,你应该在定义路由时使用字符串,使用控制器在另一个文件中或在Router.map(...)之后使用。