title: Why does AngularJS filter only run once?
body: <p>Consider the following example:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>    angular.module('app', []).controller('TestController', function($scope) {
        $scope.getText = function() {
            console.log('getting text');
            return 'text';
        };
    }).filter('text', function() {
        return function() {
            console.log('text filter');
            return 'text';
        };
    });</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code> 
  
    &lt;script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"&gt;&lt;/script&gt;
  &lt;div ng-app="app" ng-controller="TestController"&gt;
      &lt;p&gt;{{getText()}}&lt;/p&gt;
      &lt;p&gt;{{'' | text}}&lt;/p&gt;
  &lt;/div&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <p>Notice that the <code>getText()</code> function runs twice whereas the filter only runs once. I assume the <code>getText()</code> function runs twice to make sure the model is now stable. Why not the same behavior for the filter?</p>