0

有人可以帮助解释在此示例中何时使用字符串 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
   });
});
4

1 回答 1

1

正如示例中所说的(“稍后评估”),当您在“Router.map(...)”之后的某个位置或其他文件中定义控制器时,将使用该字符串。

考虑到 Meteor 以特定顺序加载您的文件,假设您从路由器加载的文件在您的控制器定义之前加载,使用该符号您会得到一个错误,因为控制器不会被定义。

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

于 2014-01-27T02:10:40.430 回答