在此示例中,有人可以帮助解释何时使用字符串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
});
});
答案 0 :(得分:1)
正如在示例中所述(“稍后评估”),当您在“Router.map(...)”之后或某些其他文件中的某个位置定义控制器时,将使用该字符串。
考虑到Meteor按特定顺序加载文件,假设您在控制器定义之前加载了路由器中的文件,使用符号会出错,因为控制器不会被定义。
为了避免这个错误,你应该在定义路由时使用字符串,使用控制器在另一个文件中或在Router.map(...)之后使用。