javascript - 在 Ember 的操作中处理事件绑定(bind)和回调

标签 javascript ember.js

这闻起来。此操作的结果应该在页面上注册一个事件处理程序,但是我应该放置命名函数回调(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);
            }
        }
    }
});

最佳答案

Ember views will handle the page events为你;无需编写自己的事件处理程序:

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

或者,您可以使用links或行动actions处理点击事件。

关于javascript - 在 Ember 的操作中处理事件绑定(bind)和回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20290879/

相关文章:

javascript - CHART.js 散点图中 x 轴的非数字

javascript - Ember.js ajax POST 请求未通过 Mirage

javascript - ajax POST 成功后更新 ember 数据存储

ember.js - ember-cli 0.0.47 升级后违反内容安全策略指令

javascript - 如何允许 Ember.js 从 html 内容字段加载内容?

javascript - 是否有类似于 os.path.join 的内置 javascript 函数?

javascript - 如果选择了文本并单击了下拉选项,则更改所选文本的颜色

javascript - Node.js - 生成 gzip 进程

javascript - 有没有办法创建 "inline-none"CSS 效果?将被隐藏,但保留它在页面上占用的空间

javascript - 将非公开文件作为回复附件发送(下载非公开文件)