【问题标题】:Ember - Handling clicks outside of viewEmber - 处理视图之外的点击
【发布时间】:2013-04-24 22:56:39
【问题描述】:

想知道是否有人在使用 Ember 时提出了一种更好的方法来处理 div 外部的点击?我知道带有全局单击处理程序的 jQuery 方式,您必须指定对某些实例要执行的每个操作,但我希望有人想出了一种在 Ember 视图中声明它的方法。同样,我尝试了 ol' 为 div 提供选项卡索引并使用 on blur,但 Ember 操作似乎不允许这样做。

【问题讨论】:

  • 我不明白问题出在哪里。您可以根据正则表达式委托事件,这不需要任何疯狂的事情。即使看一下 Ember.js 文档,也表明利用 jQuery 的 .on() 方法是他们用来解决大量元素子集(无论是否嵌套)的委托问题的方法。
  • 您可以使用didInsertElement 事件来启动插件等。您应该使用willDestroyElement 删除绑定。或者,您可以使用View#on

标签: javascript jquery ember.js


【解决方案1】:

感谢您的意见。我又回去阅读了关于 jQuerys .on 的文档。我不知道您可以为事件命名。所以我拿了两个 cmets 并将它们与这样的东西结合起来。

didInsertElement: function() {
    Ember.run.next(this, 'attachClickHandler');
},

attachClickHandler: function (){
    var temp = this;

    $(window).on("click." + temp.elementId, function (e){
        //...event here
    });
},

detachClickHandler: function (){
    $(window).off("click." + this.elementId);
},

这允许事件特定于每个视图实例,这正是我想要的。谢谢大家!

【讨论】:

  • 我假设 detachClickHandler() 是从视图的 willDestroyElement 挂钩中调用的?
  • 我不知道事件命名空间:)
【解决方案2】:

你可能会发现ClickElsewhereMixin很有用

只需在任何组件上包含 mixin 并实现 onClickElsewhere()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多