Zrobiłem skrzypce przetestować ten siebie.
http://jsfiddle.net/xuvzzay8/4/
HTML:
<div ng-controller="MyCtrl">
{{bool ? ternaryTrue() : ternaryFalse() }}<br/>
{{bool}}<br/>
<button ng-click="bool = !bool">Toggle Bool</button>
{{a}}
<div style="background-color:red" ng-mouseover="hover()">
Hover here to trigger digest
</div>
</div>
JS:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.bool = true;
$scope.a = 0;
$scope.ternaryTrue = function(){
console.log("ternary executed on true");
}
$scope.ternaryFalse = function(){
$scope.a++; //creates an infinite digest loop
console.log("ternary executed on false");
}
$scope.hover = function(){
console.log("Hover");
}
}
Rezultatem jest to, że operator trójargumentowy jest wykonywany na każdym Digest.
Edycja: W ten sposób można łatwo utworzyć pętlę nieskończonego skrótu. Jak tylko coś w $ scope zostanie zmienione podczas funkcji, która jest wywoływana przez potrójnego operatora, uruchomione zostanie kolejne podsumowanie, które ponownie uruchamia funkcję operatora trójskładnikowego itd.
Zostanie wykonany po wczytaniu strony i zmianie wartości 'ui.isTrue'. –
Tylko jeśli AnglarJS jest świadomy 'ui.isTrue' – Pureferret