Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何识别click event ember.js的调用方_Javascript_Ember.js_Onclick - Fatal编程技术网

Javascript 如何识别click event ember.js的调用方

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>

我是新加入ember.js的,我想知道如何识别是哪个div创建了click事件

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}}
{{{#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”指的是以当前视图为目标。