0

$http 有很多繁忙的指标。

我的过滤器在手机上可能需要 2 或 3 秒。我想“忙”显示,直到 Angular 完成它的工作(过滤并重绘它需要的东西),所以用户不会再次点击。

有没有我可以订阅的事件可以帮助我把它连接起来?

4

2 回答 2

0

您需要活动是否有特定原因?我认为没有,但您可以考虑将所有过滤器函数包装在一个通用的繁忙指示器包装器中。

function busyWrap(func) {
  return function() {
    Busy.start();
    try {
      func.apply(this, Array.prototype.slice.call(arguments, 0));
    } finally {
      Busy.stop();
    }
  }
};

然后在您的过滤器定义中更改如下内容

app.filter('filter', function() {
  return function(input) {
    return output;
  };
});

对此

app.filter('filter', function() {
  return busyWrap(function(input) {
    return output;
  });
});

代码可能并不完美,但包含过滤器函数的可重用函数的想法是你最好的选择。但是,很可能花费最多时间的代码是 angular 内部的(例如在排序列表上重绘一个大的 ng-repeat),所以这可能对您没有帮助。

于 2013-10-22T20:53:11.607 回答
0

我写了一个指令 BusyIndi​​cator IsBusy="IsBusySubmitting || IsBusyLoadingTemplate"

我可以通过这种方式通过控制器范围控制繁忙的指示器层。

https://twitter.com/leblancmeneses/statuses/341368016556142594

于 2013-10-23T11:14:16.483 回答