【发布时间】:2013-08-30 00:51:31
【问题描述】:
我是 ember.js 的新手,想知道如何确定是哪个 div 创建了点击事件。
index.html
------------旧代码-----------
{{#each App.menuController}}
{{#view App.menuClickable}}
<div id={{bindAttr id="idTagName"}}>
{{title}}
</div>
{{/view}}
{{/each}}
---------更新代码---------
{{#each App.menuController}}
<div id={{bindAttr id="idTagName"}} {{action selectMenuItem target="App.menuClickable"}}>
{{title}}
</div>
{{/each}}
app.js
App.MenuOption = Ember.Object.extend({
title: null,
idName: null
});
App.menuController = Ember.ArrayController.create({
content:[],
init : function()
{
// create an instance of the Song model
for(var i=0; i<menuOptions.length; i++) {
console.debug(menuOptions[i]);
this.pushObject(menuOptions[i]);
}
},
click: function(e)
{
alert("here");
}
});
App.menuClickable = Ember.View.extend({
click: function(evt) {
alert("ClickableView was clicked!");
console.debug(evt);
},
classNames: ['navButton'],
selectMenuItem: function()
{
alert("selected Menu clicked");
}
});
如您所见,这将打印出几个具有不同标签名称的 div。我想将一个 onclick 动作事件关联到每个 div。
环顾四周,似乎有两种方法:
- 像我一样创建一个视图并覆盖点击函数(e){}。但是,如果我得到这条路线,我不确定如何区分不同的 div 以及触发它的原因。我可以查看事件的属性(target->attribute->Id),但我觉得应该有更简洁的方法
-
使用操作 {{action click "idTagName"}}。但是,我在 App.menuClickable 中实现此操作时遇到问题。它没有被触发,我不知道为什么。我收到以下错误:
错误:没有处理“点击”事件。 throw new Error("没有处理事件'" + name + "'.");
我以为你会像我在 App.menuClickable 中那样实现点击操作。还有其他地方应该实施吗?
【问题讨论】:
标签: javascript ember.js onclick