Angularのfilterがものすごく実行される件
Angularのfilterが便利なので使ってみると、何故かすごく実行されることに気がついた。
mouseの動きを$scope
のhandleMouseMove
で受け取っており、$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度実行しているのがなんでか気になる。