Javascript 在Ember中的操作中处理事件绑定和回调

Javascript 在Ember中的操作中处理事件绑定和回调,javascript,ember.js,Javascript,Ember.js,这有味道。此操作的结果应该在页面上注册一个事件处理程序,但是我应该放置命名函数回调(clickHandler)吗?混血?或者完全是另一门课 App.StepController = Ember.ObjectController.extend({ actions: { captureStep: function() { //Bind the handler to this so callback has access to Controller p

这有味道。此操作的结果应该在页面上注册一个事件处理程序,但是我应该放置命名函数回调(clickHandler)吗?混血?或者完全是另一门课

App.StepController = Ember.ObjectController.extend({
    actions: {
        captureStep: function() {

            //Bind the handler to this so callback has access to Controller properties
            var clickHandler = clickHandler.bind(this);

            //Can't do this with jquery, as capture is not cross browser compatible.
            //Setting capture to true on a body event makes this event fire before all others                
            if (document.body.addEventListener) {
                document.body.addEventListener('click', clickHandler, true);
            }

            function clickHandler(event) {
                event.preventDefault(); //Needed for links/buttons
                event.stopImmediatePropagation(); //Stop the event from bubbling and prevent 'same element' event handlers 

                //Determine clickTarget...

                console.log("Clicked: " +  clickTarget);
                this.set('model.targetPath', clickTarget);

                // remove this handler from the body
                document.body.removeEventListener(event.type, clickHandler, true);
            }
        }
    }
});
余烬为你;无需编写自己的事件处理程序:

App.StepView = Ember.View.extend({
    click: function(event) {
           this.get('controller').set(...);
        }
    }
});
或者,您可以使用或操作来处理单击事件。

Ember for you;无需编写自己的事件处理程序:

App.StepView = Ember.View.extend({
    click: function(event) {
           this.get('controller').set(...);
        }
    }
});

或者,您可以使用或操作来处理单击事件。

什么是单击目标,它是
事件。targetElement
?要知道,为什么要存储它?clickTarget是从event.targetElement派生的。基本上,有一系列规则,它们接受页面上的任何元素并唯一地标识它。这是一个安装在我们无法控制的页面上的嵌入式应用程序。什么是clickTarget,它是
事件。targetElement
?要知道,为什么要存储它?clickTarget是从event.targetElement派生的。基本上,有一系列规则,它们接受页面上的任何元素并唯一地标识它。这是一个嵌入式应用程序,安装在我们无法控制的页面上。酷!但是我需要能够打开和关闭这个处理器。此外,处理程序必须绑定到文档体,而不是视图。给你一些背景。用户点击记录,点击页面中的任意位置,这就是我需要捕获的内容。因此,在ApplicationView上设置点击处理程序,并使其在ApplicationController对象或任何其他控制器上切换属性。然后您可以观察控制器属性。它是一个嵌入式应用程序,因此应用程序控制器绑定到一个div,而不是body。事件处理程序需要绑定到文档体以覆盖应用程序控件之外的元素。酷!但是我需要能够打开和关闭这个处理器。此外,处理程序必须绑定到文档体,而不是视图。给你一些背景。用户点击记录,点击页面中的任意位置,这就是我需要捕获的内容。因此,在ApplicationView上设置点击处理程序,并使其在ApplicationController对象或任何其他控制器上切换属性。然后您可以观察控制器属性。它是一个嵌入式应用程序,因此应用程序控制器绑定到一个div,而不是body。事件处理程序需要绑定到文档体,以覆盖应用程序控件之外的元素。