如何在离开页面时触发 ember.js 操作?
How to fire ember.js action on navigating away from a page?
我有一个类似于 facebook 搜索栏的搜索栏。此时,它可以正常工作,并且在单击结果列表中的 "John Smith" 时,我的应用程序会显示 John Smith 用户页面。与 Facebook 的界面一样,顶部导航栏 - 搜索栏所在的位置 - 保留。
显示 John Smith 用户页面时,搜索栏不是空白,而是显示 "John Smith"。现在,当我离开这个页面时,我需要清除这个搜索栏。
因此,当用户离开这条特定路线时,我该如何触发一个动作?
如果我理解正确你在问什么 - 你不需要触发一个动作,Ember.js 已经为你提供了 willTransition
事件。
在 willTransition
内,您可以控制显示搜索栏的控制器并处理事务。类似于:
App.IndexRoute = Ember.Route.extend({
actions: {
willTransition: function(transition) {
console.log('Will go away...');
var appController = this.controllerFor('application');
appController.set('dude', '');
}
}
});
工作演示here
我有一个类似于 facebook 搜索栏的搜索栏。此时,它可以正常工作,并且在单击结果列表中的 "John Smith" 时,我的应用程序会显示 John Smith 用户页面。与 Facebook 的界面一样,顶部导航栏 - 搜索栏所在的位置 - 保留。
显示 John Smith 用户页面时,搜索栏不是空白,而是显示 "John Smith"。现在,当我离开这个页面时,我需要清除这个搜索栏。
因此,当用户离开这条特定路线时,我该如何触发一个动作?
如果我理解正确你在问什么 - 你不需要触发一个动作,Ember.js 已经为你提供了 willTransition
事件。
在 willTransition
内,您可以控制显示搜索栏的控制器并处理事务。类似于:
App.IndexRoute = Ember.Route.extend({
actions: {
willTransition: function(transition) {
console.log('Will go away...');
var appController = this.controllerFor('application');
appController.set('dude', '');
}
}
});
工作演示here