Tom*_*Tom 9 html javascript variables ternary-operator angularjs
如果我在Angular.js视图中使用三元运算符,它将在每个摘要(如函数)上执行,还是仅在决策所需的变量发生变化时执行?
例:
<div>{{ui.isTrue ? "foo" : "bar"}}</div>
Run Code Online (Sandbox Code Playgroud)
要么:
<div ng-bind="ui.isTrue ? 'foo' : 'bar'"></div>
Run Code Online (Sandbox Code Playgroud)
它会在每个摘要上执行还是仅在ui.IsTrue更改时执行?
我自己做了一个小提琴来测试这个。
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>
Run Code Online (Sandbox Code Playgroud)
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");
}
}
Run Code Online (Sandbox Code Playgroud)
结果是三元运算符在每个摘要上执行。
编辑:用这个可以轻松创建无限摘要循环。一旦 $scope 中的某些内容在三元运算符调用的函数期间发生更改,就会启动另一个摘要,再次执行三元运算符的函数等。
归档时间: |
|
查看次数: |
980 次 |
最近记录: |