1

除了记录每个位置更改之外,我还想记录这些点击事件,因为很多时候用户会点击某事并且该点击不会更新位置哈希。如果可以通过拦截对操作助手的调用来记录这些事件,那将会很有帮助。到目前为止,我已经尝试过黑客攻击,但没有运气。我仍然可以将它们记录在事件处理程序中。就是感觉有点啰嗦。有没有人有类似的问题?有任何想法吗?

为了清楚起见,例如,不是在路由或控制器中具有类似下面的代码,而是在触发操作事件时触发对谷歌分析的调用。

clickMe: function(){
App.Analytics.logEvent({category: "userEvent", action: "click", label:"click me", value: 1});
},

我试图定义一个自定义的帮助器,它基本上是一个围绕动作帮助器的包装器,它使用从其调用者获得的信息进行调用以记录谷歌分析事件,然后在内部调用 ember 的动作帮助器。我在模板中使用我自己的助手进行尝试,但日志事件仅在模板第一次呈现时发生。如果我继续单击视图,则不会记录任何用户活动。

4

1 回答 1

1

您可以使用 javascript 的事件冒泡机制来执行此操作。在任何 Ember 视图中,添加一个为事件命名的处理程序将自动为该事件设置一个侦听器。

通过在 上放置这样的click处理程序,ApplicationView您可以监听所有嵌套视图的所有点击。

App.ApplicationView = Em.View.extend({
  click: function(event) {
    console.log('ApplicationView.click', event);
  }
});

从这里您可以使用this.get('controller').send(event)通知控制器、路由等来访问调用谷歌分析代码的函数。

于 2013-08-02T07:33:02.803 回答