如何在Ember每次发生变化时运行代码

时间:2014-03-17 11:48:47

标签: ember.js

我有一个用户可以在任何阶段打开的菜单。如果用户开始输入任何内容或执行某些操作,我希望菜单自动隐藏。

该菜单适用于我的应用中的许多页面。理想情况下,我想执行代码来测试每当用户更改应用程序中的任何内容时菜单是否应该关闭。 e.g。

if(appController.get('showMenu'){
   appController.set('showMenu', false);  
}  

对于DRY解决方案的任何想法?

2 个答案:

答案 0 :(得分:0)

您是否尝试过收听失焦事件?只要在组件失去焦点时将其设置为false。

答案 1 :(得分:0)

我设法使用提议的here解决方案来解决这个问题,并且我认为如果其他人有类似的要求我会分享它。

只需在页面上执行此代码:

    $('html').click(function() {
        App.applicationRoute.send('hideMenu');
    });

这可以捕获页面上的每个点击事件,然后隐藏菜单 - 事件仍然传播到菜单。