我有一个有角度的应用程序,如:
angular.module('ngStyleApp', [])
.controller('testCtrl', function($scope) {
$scope.list = [1,2,3];
$scope.getStyles = function(index) {
console.log('getting styles for index ' + index);
return {
color: 'red'
};
};
});
Run Code Online (Sandbox Code Playgroud)
与相应的标记:
<div ng-app="ngStyleApp">
<ul ng-controller="testCtrl">
<li ng-repeat="value in list" ng-style="getStyles($index)">
{{value}}
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,可见输出是三个红色列表项.但该语句总共记录到控制台6次,这意味着视图呈现两次:
getting styles for index 0
getting styles for index 1
getting styles for index 2
getting styles for index 0
getting styles for index 1
getting styles for index 2
Run Code Online (Sandbox Code Playgroud)
为什么?
我读自创AngularJS和具有怎样的一个体面的理解$scopes,$watch和$digest工作.我了解当你添加自己的$watches并且打电话给自己时它是如何工作的$digests.但是,我对于默认情况下究竟发生了什么感到困惑.
$scope.$$watchers默认添加什么?你穿的一切$scope?你指定的所有东西ng-model?都?别的什么?
什么时候确实$digests被默认触发?输入字段更改?输入字段用ng-models?其他?