首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建在视图层次结构中冒泡的自定义事件?

如何创建在视图层次结构中冒泡的自定义事件?
EN

Stack Overflow用户
提问于 2012-10-16 23:25:13
回答 2查看 3.7K关注 0票数 4

我有一些按钮视图,它们是我编写的一组Ember.js表单助手的一部分。例如,MyAddressFormView的模板如下:

代码语言:javascript
复制
{{#form}}
  {{textArea address}}
  {{submitButton}}
  {{cancelButton}}
{{/form}}

为了处理"Submit“按钮,我让"submit”表单事件冒泡,并在MyAddressFormView的submit方法中处理它。

但是如何对"Cancel“按钮执行同样的操作呢?例如,有没有办法在子视图中触发自定义的"cancel form“事件,让它冒泡,并在祖先视图中处理它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-27 14:17:11

我建议触发一个jQuery特殊事件,并在你的Ember应用程序上注册该事件。例如:

代码语言:javascript
复制
Ember.Application.create({
  customEvents: {
    // key is the jquery event, value is the name used in views
    formcancel: 'formCancel'
  }
});

在您的cancelButton视图中:

代码语言:javascript
复制
click: function(evt){
  Ember.$().trigger('formcancel')
}

这将以与其他映射的Ember DOM事件相同的方式冒泡。

票数 4
EN

Stack Overflow用户

发布于 2013-09-13 01:52:18

Ember.ActionHandler通过其“目标”属性冒泡事件。默认情况下,可以覆盖Ember.View的目标,让事件通过parentViews冒泡。

首先包含这个混入:

代码语言:javascript
复制
(function() {
    Ember.View.reopen({
        // Let actions bubble to parentView by default.
        target: function() {
            return this.get('parentView');
        }.property('parentView')
    });
})();

然后像往常一样发送事件:

代码语言:javascript
复制
tap: function() { this.send('someEvent'); }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12918112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档