MyFactory.buildTypeConstraints()
определенно возвращает новые экземпляры объекта.
Даже если они равны по значению, они не одинаковы (это разные экземпляры), поэтому он запускает обнаружение нового изменения и, следовательно, новый цикл дайджеста.
Возможно, вам следует использовать angular.equals
, чтобы свойство не возвращало новый экземпляр объекта, если значение не изменилось.
let typeConstaints, valueConstraints;
vm.arr = [{
type: {
model: null,
get constraints() {
let constr = MyFactory.buildTypeConstraints(this.model);
if(!angular.equals(typeConstaints, constr)) typeConstaints = constr;
return typeConstaints;
}
},
value: {
model: null,
get constraints() {
let constr = MyFactory.buildTypeConstraints(this.model);
if(!angular.equals(valueConstraints, constr)) valueConstraints= constr;
return valueConstraints;
}
},
niveau: null
}];