Ember.js:转换到嵌套路由调用哪个操作?
对于嵌套管线,我遵循了以下指南: 我有一个嵌套的路由:Ember.js:转换到嵌套路由调用哪个操作?,ember.js,controller,nested,routes,Ember.js,Controller,Nested,Routes,对于嵌套管线,我遵循了以下指南: 我有一个嵌套的路由: App.Router.map(function () { this.resource('account', function() { this.route('register'); }); }); 在我的索引模板中,我调用了我的索引控制器的一个操作,即: App.IndexController = Ember.Controller.extend({ actions: { doRegi
App.Router.map(function () {
this.resource('account', function() {
this.route('register');
});
});
在我的索引模板中,我调用了我的索引控制器的一个操作,即:
App.IndexController = Ember.Controller.extend({
actions: {
doRegistration: function(){
this.transitionToRoute('account.register');
}
}
});
到目前为止,一切都正常工作,我的AccountRegisterController甚至被实例化,我想当以下内容登录到控制台时:
App.AccountRegisterRoute = Ember.Route.extend({
setupController: function(controller, model){
console.log('setting up controller'+controller);
}
});
这是我的AccountRegisterController:
App.AccountRegisterController = Ember.Controller.extend({
actions: {
register: function(){
console.log('account register');
},
index: function(){
console.log('account index');
}
}
});
问题是控制器的两个动作都没有被调用。为什么?我怎样才能告诉
转换到(…)
调用什么操作?我做错了什么?'transitiono'不需要动作,它只是改变了路线
为了执行代码,您可以在路由上的不同钩子中执行
你可以:
App.AccountRegisterRoute = Ember.Route.extend({
beforeModel: function() {
console.log('setting up controller'+controller);
//write any register code here
}
});
或者,您可以将操作发送到路由挂钩:
App.AccountRegisterRoute = Ember.Route.extend({
beforeModel: function() {
this.send('register');
this.transitionTo('account.welcome');
}
});
您可能希望首先执行操作,然后在没有中间路线的情况下进行转换。像这样:
App.IndexController = Ember.Controller.extend({
actions: {
doRegistration: function(){
//code to register user here.
this.transitionToRoute('account.welcome');
}
}
});
如果您希望能够重用注册控制器,可以将其定义为父控制器中的一个操作,该操作将弹出,就像您没有在子控制器或路由中定义它一样:
App.ApplicationRoute = Ember.Route.extend({
actions: {
doRegistration: function(){
//code to register user here.
this.transitionTo('account.welcome');
}
}
});
sry,我不明白。如果我将代码放入路由中的
beforeModel
,我如何知道是执行注册代码还是登录代码?我的控制器处理这两种情况,这就是为什么我的控制器中有多个操作。我不懂这个控制器。为什么我不能采取行动?我的意思是,beforeModel
如何知道我是否要执行indexAction
或registerAction
的代码,正如它们在我的AccountRegisterController
中定义的那样?