AngularJS: classe ng condicional com uma função que dispara quantidades ridículas

Eu verifiquei perguntas e respostas semelhantes, mas elas não resolveram o meu problema.

Quero definir dinamicamente a classe de uma entrada, considere o seguintePlunkr.

Como você pode ver, eu tenho um campo, definido assim:

<input type="text" ng-model="Person.Name" ng-class="{'mandatory': IsFieldMandatory('Name')}" />

Essa função tem o seguinte código:

self.IsFieldMandatory = function(field){
  var isMandatory = true;

  var value = $scope.Person.Name;

  $scope.Cnt = $scope.Cnt + 1;

  return value.length == 0;
}

Como você pode ver, ele dispara 11 (!) Vezes em um carregamento de página (ou qualquer outra ação como desfoque).

PS: A função não funciona porque recebo este erro:

Error: $rootScope:infdig Infinite $digest Loop

Isso ocorre devido ao incremento $ scope.Cnt. Se colocado em comentário, ele funciona (mas não sei o número de gatilhos).

PPS:

Como posso usar isso ?:

var value = $parse('Person.' + field);

Isso seria melhor porque então a função funcionaria para qualquer campo. Do que precisa, no cenário do mundo real. (isso retorna uma função, não um valor real)

Valeu!

ATUALIZAR

O exemplo do Plunkr não parece ser valioso; portanto, a função original:

self.IsMandatory = function (field) {

    console.log('test');

    if (self.IsMandatoryFieldsLoaded == true) {
        var idxAsync = self.MandatoryFields.indexOf(field);
        return idxAsync > -1;
    }

    return false;
}

Como você pode ver, não faço modificações, apenas lê. Eu tenho 11 campos, mas o log de 'teste' dessa função é gravado 198 vezes!

questionAnswers(1)

yourAnswerToTheQuestion