从 ember 组件操作访问 jquery 事件
Access jquery event from ember component action
我正在尝试使用一个简单的覆盖组件,如果有人在覆盖内容之外单击则关闭此覆盖:
<div class="overlay" {{action 'close' on='click'}}>
<div class="item">
<form {{action 'submit' on='submit'}}>
{{yield}}
{{#link-to closeRoute class="close"}}Close{{/link-to}}
</form>
</div>
</div>
组件如下所示:
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
submit: function() {
this.sendAction();
},
close: function(param) {
console.log(param); // -> undefined
console.log(this); // -> complete component object, no reference to the event?
// this.$("a.close").click();
}
}
});
这与广告一样有效,但是,我需要确定点击事件的目标,因为点击项目和表单也会触发此点击(关闭)操作。
问题:如何从组件内的关闭操作中访问具有目标的 (jQuery) 事件对象?
我正在使用 EmberCLI,并且 Ember 1.9
我发现这可以提供所需的结果:
export default Ember.Component.extend({
classNames: ['overlay-block'],
didInsertElement: function() {
var self = this;
self.$().click(function(e) {
if (self.$(e.target).hasClass("overlay-block")) {
self.$("a.close").click();
}
});
}
});
这并没有像我预期的那样使用 ember 操作。我会让这个问题暂时悬而未决,看看是否有人想出更多 'Ember way' 的做法。
更多Ember方式
export default Ember.Component.extend({
classNames: ['overlay-block'],
click: function(e) {
if (this.$(e.target).hasClass("overlay-block")){
this.$("a.close").click();
}
}
});
我正在尝试使用一个简单的覆盖组件,如果有人在覆盖内容之外单击则关闭此覆盖:
<div class="overlay" {{action 'close' on='click'}}>
<div class="item">
<form {{action 'submit' on='submit'}}>
{{yield}}
{{#link-to closeRoute class="close"}}Close{{/link-to}}
</form>
</div>
</div>
组件如下所示:
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
submit: function() {
this.sendAction();
},
close: function(param) {
console.log(param); // -> undefined
console.log(this); // -> complete component object, no reference to the event?
// this.$("a.close").click();
}
}
});
这与广告一样有效,但是,我需要确定点击事件的目标,因为点击项目和表单也会触发此点击(关闭)操作。
问题:如何从组件内的关闭操作中访问具有目标的 (jQuery) 事件对象?
我正在使用 EmberCLI,并且 Ember 1.9
我发现这可以提供所需的结果:
export default Ember.Component.extend({
classNames: ['overlay-block'],
didInsertElement: function() {
var self = this;
self.$().click(function(e) {
if (self.$(e.target).hasClass("overlay-block")) {
self.$("a.close").click();
}
});
}
});
这并没有像我预期的那样使用 ember 操作。我会让这个问题暂时悬而未决,看看是否有人想出更多 'Ember way' 的做法。
更多Ember方式
export default Ember.Component.extend({
classNames: ['overlay-block'],
click: function(e) {
if (this.$(e.target).hasClass("overlay-block")){
this.$("a.close").click();
}
}
});