1

すべての場所の変更をログに記録するだけでなく、多くの場合、ユーザーが sth をクリックし、そのクリックが場所のハッシュを更新しないため、これらのクリック イベントもログに記録したいと思います。アクション ヘルパーの呼び出しをインターセプトして、これらのイベントをログに記録できると便利です。私はハッキングを試みましたが、今のところ運がありません。イベントハンドラーにそれらを記録できます。少し冗長に感じます。誰かが同様の問題を抱えていますか?何か案は?

明確にするために、たとえば、以下のようなコードを持つルートまたはコントローラーの代わりに、アクション イベントが発生するたびに、Google アナリティクスへの呼び出しがトリガーされる可能性があります。

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

基本的にアクションヘルパーのラッパーであるカスタマイズされたヘルパーを定義しようとしました。呼び出し元から取得した情報を使用してGoogle分析イベントをログに記録し、内部で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)、コントローラー、ルートなどに通知して、Google アナリティクス コードを呼び出す関数に到達するために使用できます。

于 2013-08-02T07:33:02.803 に答える