Javascript 如何识别click event ember.js的调用方
我是新加入ember.js的,我想知道如何识别是哪个div创建了click事件 index.html ------------旧代码-----------------------Javascript 如何识别click event ember.js的调用方,javascript,ember.js,onclick,Javascript,Ember.js,Onclick,我是新加入ember.js的,我想知道如何识别是哪个div创建了click事件 index.html ------------旧代码----------------------- {{#each App.menuController}} {{#view App.menuClickable}} <div id={{bindAttr id="idTagName"}}> {{title}} </div>
{{#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}}
{{{#each App.menuController}
{{{#查看App.menuClickable}
{{title}}
{{/view}
{{/每个}}
----------更新代码---------------------
{{#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}}
{{{#each App.menuController}
{{title}}
{{/每个}}
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");
}
});
App.MenuOption=Ember.Object.extend({
标题:空,
idName:null
});
App.menuController=Ember.ArrayController.create({
内容:[],
init:function()
{
//创建歌曲模型的实例
对于(var i=0;iattribute->Id),但我觉得应该有一种更干净的方法
使用操作{action click“idTagName”}。但是,我在App.menuClickable中实现此操作时遇到问题。未触发此操作,我不确定原因。我收到以下错误:
错误:没有处理“单击”事件。
抛出新错误(“没有处理事件“'+name+””)
我以为你会像我在App.menuClickable中那样实现单击操作。还有其他地方应该实现吗?这里的方法是{{action selectMenuItem“idTagName”}
方法。默认情况下,{action}
helper将在控制器的actions
散列中查找selectMenuItem
函数。如果未找到,它将被发送到路由器,路由器将检查当前路由和任何父路由的selectMenuItem
函数在路由的actions
散列中
如果要在视图上触发函数,请将其指定为目标,如{action selectMenuItem“idTagName”target=“view”}
我尝试了{action selectMenuItem target=“App.menuClickable”}路由,但它似乎无法识别操作“selectMenuItem.Fire bug投诉”App.menuClickable上不存在“selectMenuItem”操作。有关我为什么会遇到这种情况的任何建议。我已更新了主要帖子中的代码以反映我所做的操作。顺便说一句,感谢您的回复!尝试将target=“App.menuClickable”
替换为target=“view”"
是的,我试过了,但没有成功。我想我对对象的链接方式没有一个清晰的理解。例如:创建索引模板->与IndexRoute关联->链接到IndexController。当我向所有这些添加相同的方法时,它会按预期工作。IndexController会被调用,如果没有定义,那么调用了ndexRoute方法。但是,我不确定该视图为什么不工作,或者它是否必须是IndexView而不是menuClickable视图。我想您可以使用任何带有“目标”的视图。也与之相关:将对此进行更多思考,但快速回答是,它应该是IndexView。我认为您缺少的是,每个余烬模板始终由一个视图支持,即使您没有定义一个视图。因此target=“view”指的是以当前视图为目标。