Angularのfilterがものすごく実行される件

Angularのfilterが便利なので使ってみると、何故かすごく実行されることに気がついた。

mouseの動きを$scopehandleMouseMoveで受け取っており、$scopeの何かしらが変化したら、filterが動くような仕様になってるっぽい (Angularのソース自体見てないので、確実にそうかどうかわからないが)

filterは注意しないとかなり重くなりそう。 回避策としては、watchしなくていいものはhtml側から実行したいメソッドだとしても$scopeにいれないで、controllerのメソッドとして定義した方がいい気がした

js

angular.module('app', []).controller('MyController', function($scope) {
  var self = this;
  self.handleMouseMove = function(){
    console.log('handleMove');
  }
});

html

<div ng-controller="MyController as ctrl">
  <p ng-click="ctrl.handleMouseMove()"></p>
</div>

そもそもangularのfilterが2度実行しているのがなんでか気になる。