铁路由器 RouteController 给出了一个未定义的错误
Iron router RouteController gives a not defined error
这很好用:
Router.route('/', function () {
this.render('home');
});
Router.route('/about', function () {
this.render('aboutView');
});
然而,这给出了一个错误(RouteController 'HomeController' 未定义):
var HomeController, MainController;
HomeController = RouteController.extend({
action: function() {
this.render('home', {
});
}
});
MainController = RouteController.extend({
action: function () {
this.render('aboutView', {
});
}
});
Router.route('/', {name: 'home', controller: 'HomeController'});
Router.route('/about', {name: 'about', controller: 'MainController'});
我已经尝试了各种排列(取自 IronRouter 文档),但仍然存在相同的错误。
我做错了什么?
要么删除这一行:
var HomeController, MainController;
使这些全局变量。
或者在指定控制器时删除引号:
Router.route('/', {name: 'home', controller: HomeController});
Router.route('/about', {name: 'about', controller: MainController});
为什么会这样?
当您使用 iron:router
定义控制器时,您可以使用 2 种不同的语法,使用字符串的变量标识符。
如果您使用变量标识符,则必须使用 var
关键字将控制器声明为局部(文件范围)变量。
然而,如果你使用字符串,控制器将被视为全局变量(window 对象的 属性),并且 Meteor 中的全局变量没有定义 var
关键字。
通常你会在不同的文件中定义你的控制器(这就是控制器的要点,外化路由逻辑)所以使用字符串语法更常见。
这很好用:
Router.route('/', function () {
this.render('home');
});
Router.route('/about', function () {
this.render('aboutView');
});
然而,这给出了一个错误(RouteController 'HomeController' 未定义):
var HomeController, MainController;
HomeController = RouteController.extend({
action: function() {
this.render('home', {
});
}
});
MainController = RouteController.extend({
action: function () {
this.render('aboutView', {
});
}
});
Router.route('/', {name: 'home', controller: 'HomeController'});
Router.route('/about', {name: 'about', controller: 'MainController'});
我已经尝试了各种排列(取自 IronRouter 文档),但仍然存在相同的错误。 我做错了什么?
要么删除这一行:
var HomeController, MainController;
使这些全局变量。
或者在指定控制器时删除引号:
Router.route('/', {name: 'home', controller: HomeController});
Router.route('/about', {name: 'about', controller: MainController});
为什么会这样?
当您使用 iron:router
定义控制器时,您可以使用 2 种不同的语法,使用字符串的变量标识符。
如果您使用变量标识符,则必须使用 var
关键字将控制器声明为局部(文件范围)变量。
然而,如果你使用字符串,控制器将被视为全局变量(window 对象的 属性),并且 Meteor 中的全局变量没有定义 var
关键字。
通常你会在不同的文件中定义你的控制器(这就是控制器的要点,外化路由逻辑)所以使用字符串语法更常见。