Javascript 如何在anuglar';之前或期间切换加载指示器;s ng单击处理程序是否正在运行?

Javascript 如何在anuglar';之前或期间切换加载指示器;s ng单击处理程序是否正在运行?,javascript,angularjs,Javascript,Angularjs,我试图在运行通过ng click指令触发的控制器操作时操纵DOM(显示/隐藏加载指示器) 我的代码如下所示: 控制器: $scope.wip = false; // set currently listed categroy $scope.setCurrentCategory = function( category ) { $scope.wip = true; //...expensive re-filtering here... $scope.wip = false;

我试图在运行通过ng click指令触发的控制器操作时操纵DOM(显示/隐藏加载指示器)

我的代码如下所示:

控制器:

$scope.wip = false;

// set currently listed categroy
$scope.setCurrentCategory = function( category ) {
  $scope.wip = true;
  //...expensive re-filtering here...
  $scope.wip = false;           
};
视图:


现在发生的是,负载指示器只在整个ng click处理完成后更新,这意味着用户永远看不到它


在执行其余处理程序之前,如何将$scope.wip的更新传播到我的视图?

我认为问题在于在setCurrentCategory函数结束之前没有调用范围摘要

您可以在$scope.wip=true之后强制生成摘要,如下所示:

$scope.setCurrentCategory = function( category ) {
  $scope.wip = true;
  $scope.digest()
  //...expensive re-filtering here...
  $scope.wip = false;           
};
我不知道在一个已经存在生命周期的函数中触发摘要是否是最好的主意,但它应该可以工作

我认为另一种方法是让范围函数更改wip:

$scope.setCurrentCategory = function( category ) {
  $scope.toggleWip();
  //...expensive re-filtering here...
  $scope.toggleWip();           
};
$scope.toggleWip = function() {
  $scope.wip = !$scope.wip;
}

你能分享plunker或fiddle演示吗
$scope.setCurrentCategory = function( category ) {
  $scope.toggleWip();
  //...expensive re-filtering here...
  $scope.toggleWip();           
};
$scope.toggleWip = function() {
  $scope.wip = !$scope.wip;
}