在我的HTML中,我有一个带有ng-click
属性的元素来触发一个函数。该函数包含一个循环,在每一步调用另一个函数。现在,我想在循环的每一步之后刷新$scope
,但是:
$scope.$apply
,因为$apply
属性已经在ng-click
阶段内,onclick
代替ng-click
,因为点击功能会更改(具体为ng-repeat
),$timeout
不起作用,因为它以某种方式混淆了循环中的函数运行的顺序(我猜点击函数运行循环然后$timeout
内的位发生) 这是我的代码:
// IN MY HTML
<th class="groupHeader" ng-repeat="j in groupsMain" ng-click="thClickColumn(j)">{{j}}</th>
// IN MY CONTROLLER
$scope.thClickColumn = function(j) {
// some code
for ( var i = 1 ; i <= 7 ; i++ ) {
_this.tdClick(i,j) ; // I'd like my $scope to refresh after doing this
if ( _this.inputElement === false ) { return ; } // Also, this bit here should break the loop if the condition is met (_this.inputElement is returned by the function above)
}
} ;
谢谢!
答案 0 :(得分:1)
实际上你可以使用$timeout
,只需确保承诺链是正确的:
$scope.thClickColumn = function(j){
var iterator = 7;
function call(){
if(iterator > 0){
_this.tdClick(iterator, j);
$timeout(function(){
iterator--;
if(_this.inputElement !== false){
call()
}
})
}
}
call();
}