这很好用:
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文档),但仍然存在相同的错误。 我做错了什么?
答案 0 :(得分:1)
删除此行:
var HomeController, MainController;
制作这些全局变量。
或者在指定控制器时删除引号:
Router.route('/', {name: 'home', controller: HomeController});
Router.route('/about', {name: 'about', controller: MainController});
为什么会这样?
使用iron:router
定义控制器时,可以使用2种不同的语法,使用字符串的变量标识符。
如果使用变量标识符,则必须使用var
关键字将控制器声明为本地(文件范围)变量。
但是,如果使用字符串,控制器将被视为全局变量(窗口对象的属性),Meteor中的全局变量定义为var
关键字。
通常,您将在不同的文件中定义控制器(这是控制器的重点,外部化路由逻辑),因此使用字符串语法更为常见。