每次URL更改时运行操作

时间:2013-11-15 05:25:21

标签: ember.js

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

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

问题是,我在哪里放这个代码?一个(相当没有吸引力的)选项是将其包含在每条路线中。不过,我认为必须有一个更好的方法。也许有一些东西在烘烤。也许有一种方法来monkeypatch Em.Router。任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:3)

您可以在currentPath上的应用程序控制器中添加一个观察者,并且每次更改时都会运行该观察者。

App.ApplicationController = Em.Controller.extend({
  resetMySearchBar: function(){
    App.searchBar().set('content', "");
  }.observes('currentPath')
});

此外,在搜索栏所在的控制器上,您可以添加应用程序控制器的需求,并观察当前路径并在更新时进行更新。

App.SearchBarController = Em.Controller.extend({
  needs: ['application'],
  resetMySearchBar: function(){
    this.set('content', ""); // or wherever this property lives
  }.observes('controllers.application.currentPath')

});