Javascript 如何在ember.js中相对于单击的动作定位模态
我有一个emberjs应用程序,用户可以: 单击链接 模态弹出 换东西 点击离开模态 保存更改 我创建了一个模式,就像在一条路线上创建事件一样。我可以将ember对象解析到路由中,但似乎无法获得单击的DOM元素。我想获取单击的DOM元素,因为我需要它的位置。我想相对于单击的DOM元素定位一个弹出窗口 我在.hbs文件中的操作如下所示:Javascript 如何在ember.js中相对于单击的动作定位模态,javascript,html,ember.js,Javascript,Html,Ember.js,我有一个emberjs应用程序,用户可以: 单击链接 模态弹出 换东西 点击离开模态 保存更改 我创建了一个模式,就像在一条路线上创建事件一样。我可以将ember对象解析到路由中,但似乎无法获得单击的DOM元素。我想获取单击的DOM元素,因为我需要它的位置。我想相对于单击的DOM元素定位一个弹出窗口 我在.hbs文件中的操作如下所示: <a {{action open option}} class='choose-template'>Choose Template</a>
<a {{action open option}} class='choose-template'>Choose Template</a>
我在App.ModalView.didInsertElement()中处理模型定位。在这里,我想使用链接DOM元素使模态自身相对于单击的链接进行定位 如果不在
视图中拦截操作
事件
它们会一直冒泡到没有可用事件的路由。因此,为了获得事件的元素位置,您应该在视图中定义并捕获操作
事件
因此,与其在路径中使用事件处理程序,不如在视图中创建它们:
例子:
更新:
再请注意,默认情况下,您操作的目标是控制器,因此如果您想将视图作为目标,您应该定义它:
<a {{action open option target="view"}} class='choose-template'>Choose Template</a>
选择模板
希望能有帮助
App.ModalView = Ember.View.extend({
open: function(event) {
// here your then have access to your event
// Example on getting the position
var posX = this.$().position().left,posY = this.$().position().top;
console.log((event.pageX - posX) + ' , ' + (event.pageY - posY));
// and then you could invoke the functions you want on your controller by
this.get('controller').send('open', andhereparameters);
},
close: function(event) {
// here your then have access to your event
// same as above
}
});
<a {{action open option target="view"}} class='choose-template'>Choose Template</a>