2

我有一个带有搜索栏的 Ember 应用程序。我想在每次 URL 更改时清除搜索栏的内容。实际操作很简单(我创建了一个函数来轻松获取搜索栏):

App.searchBar().set('content', "")

问题是,我把这段代码放在哪里?一个(相当不吸引人的)选择是将它包含在每条路线中。不过,我假设必须有更好的方法。也许有一些东西在里面。也许有办法给 Em.Router 打补丁。任何建议将不胜感激。

4

1 回答 1

3

您可以在 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')

});
于 2013-11-15T05:49:07.647 回答