我想在 Ember 路由器中的每个 connectOutlets 调用之前和之后调用一些函数。我无法在 Ember 文档中找到任何内容。
有什么建议么 ?
我想在 Ember 路由器中的每个 connectOutlets 调用之前和之后调用一些函数。我无法在 Ember 文档中找到任何内容。
有什么建议么 ?
来自“了解 Ember.js 路由器:入门”指南:
每个 Ember.Route 都会触发一个进入和退出回调。这里是插入日志记录和调试数据的合适位置,该应用程序中已经出现。
在路由器中将 enableLogging 属性设置为 true 也有助于显示路由器的决策过程。当浏览器的调试控制台打开时,路由器将打印以 STATEMANAGER 开头的有用错误消息。
您可以按如下方式使用enter
和回调:exit
App.Router = Ember.Router.extend({
enableLogging: true,
root: Ember.Route.extend({
gotoHome: Em.Route.transitionTo('root.home'),
gotoInfo: Em.Route.transitionTo('root.info'),
index: Ember.Route.extend({
route: '/',
redirectsTo: 'home'
}),
home: Ember.Route.extend({
route: '/home',
connectOutlets: function(router) {
router.get('applicationController')
.connectOutlet("home");
},
enter: function(router){
console.log('The "enter" event of "home" route has been fired');
},
exit: function(router) {
console.log('The "exit" event of "home" route has been fired');
}
}),
info: Ember.Route.extend({
route: '/info',
connectOutlets: function(router) {
router.get('applicationController')
.connectOutlet("info");
},
enter: function(router){
console.log('The "enter" event of "info" route has been fired');
},
exit: function(router) {
console.log('The "exit" event of "info" route has been fired');
}
})
})
});
在浏览器控制台打开的情况下检查这个小提琴,这样你就可以在输入/离开路线时看到日志。
编辑:如果您只想根据路线更新当前选定的菜单,则不需要在连接插座之后或之前连接事件,您实际上需要您的“菜单控制器”具有跟踪的属性选定的项目,当您输入给定的路线时,您会更新该控制器。您的“菜单视图”将具有子菜单项,其中包含classNameBindings
基于控制器中选择的提要(您可以绑定到父视图)。这个小提琴已经实现了,所以我不会再写一个了,但是检查一下,看看NavigationController
, NavigationView
(and NavigationItemView
) & 路线。在每个connectOutlet
我更新控制器中的选定菜单项,如下所示:
router.set('navigationController.selected', 'MY ROUTE NAME GOES HERE');
希望这可以帮助