我是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相关联。
从四处查看似乎有两种方式:
使用操作{{action click&#34; idTagName&#34;}}。但是,我在App.menuClickable中实现此操作时遇到问题。它没有被触发,我不知道为什么。我收到以下错误:
错误:没有处理该事件&#39;点击&#39;。 抛出新错误(&#34;没有处理事件&#39;&#34; +名称+&#34;&#39;。&#34;);
我以为你会像我在App.menuClickable中那样实现点击操作。还有另一个地方应该实施吗?
答案 0 :(得分:2)
{{action selectMenuItem "idTagName"}}
方法是去这里的方法。默认情况下,{{action}}
帮助器将在控制器的selectMenuItem
哈希中查找actions
函数。如果没有找到,它将被发送到路由器,路由器将检查当前路由以及路由的selectMenuItem
哈希中actions
函数的任何父路由。
如果要在视图上触发某个功能,请将其指定为{{action selectMenuItem "idTagName" target="view"}}