我有一个带有搜索栏的 Ember 应用程序。我想在每次 URL 更改时清除搜索栏的内容。实际操作很简单(我创建了一个函数来轻松获取搜索栏):
App.searchBar().set('content', "")
问题是,我把这段代码放在哪里?一个(相当不吸引人的)选择是将它包含在每条路线中。不过,我假设必须有更好的方法。也许有一些东西在里面。也许有办法给 Em.Router 打补丁。任何建议将不胜感激。
我有一个带有搜索栏的 Ember 应用程序。我想在每次 URL 更改时清除搜索栏的内容。实际操作很简单(我创建了一个函数来轻松获取搜索栏):
App.searchBar().set('content', "")
问题是,我把这段代码放在哪里?一个(相当不吸引人的)选择是将它包含在每条路线中。不过,我假设必须有更好的方法。也许有一些东西在里面。也许有办法给 Em.Router 打补丁。任何建议将不胜感激。
您可以在 currentPath 上的应用程序控制器中添加一个观察者,并且每次它更改时都会运行它。
App.ApplicationController = Em.Controller.extend({
resetMySearchBar: function(){
App.searchBar().set('content', "");
}.observes('currentPath')
});
此外,在您的搜索栏所在的控制器上,您可以添加对应用程序控制器的需求,并观察 currentPath 并在它出现时进行更新。
App.SearchBarController = Em.Controller.extend({
needs: ['application'],
resetMySearchBar: function(){
this.set('content', ""); // or wherever this property lives
}.observes('controllers.application.currentPath')
});