有没有办法在每个$http.get上禁用$digest的触发
Is there a way to disable triggering of $digest on every $http.get?
背景
angular的$http
服务在每个get
上触发$digest
(如果没有$digest
已经运行):
if (!$rootScope.$$phase) $rootScope.$apply();
Ia除了从我们的API获取对象外,我们的应用程序还有许多带有templateUrl
的指令,这些指令是通过使用$http
的angular获取的。这导致冷启动时有数百个$digest
循环。
注释掉上面的行,将$digest
循环的数量减少到大约3个,应用程序运行MUCH更快,没有绑定中断(至少是因为$http
没有触发$digest
)。
问题
有没有办法禁用触发$digest的$http?
在应用程序配置中使用$httpProvider.useApplyAsync(true);
。则10ms内加载的templates指令将面临相同的摘要。这将减少摘要循环调用。请参阅此处
可能无法直接执行您想要的操作,但您可以限制这些摘要周期的影响。尝试在页面的大部分区域放置<div ng-if="everythingLoaded">
,并在所有$http
调用完成后将everythingLoaded
设置为true。
例如:
var p1 = $http.get(...);
var p2 = $http.get(...);
Promises.all([p1, p2]).then(function() {
$scope.everythingLoaded = true;
});
摘要循环仍将运行,但速度会快得多,因为ng-if
将消除对DOM和大部分控制器的影响,直到条件变为真。
我非常确信使用模板缓存将解决模板加载问题,假设这在最近的angular版本中仍然是一个问题。
相关文章:
- Meteor如何接收HTTP请求
- 在我的情况下,如何进行http请求
- //而不是在src=“”上使用http://"属性
- 我无法使用angularJs($http)访问服务器
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- 如何将PHP get查询转换为Meteor's HTTP.get()
- 角度异步http自动完成
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 角度http服务器页面刷新404s
- http.listen()在运行时接受终端命令
- IIS动态HTTP响应标头
- spring和angularJS(我得到了类似HTTP状态404的错误)
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- Typescript angularjs$http获取响应类型(避免使用<any>)
- 如何从HTTP上下文对象中获取Post数据
- 使用插件收听Firefox标签的http请求
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- $http调用似乎产生了无限$digest循环
- 错误:在同一个angular Js函数中使用两个Http请求调用时,$digest已经在进行中
- 有没有办法在每个$http.get上禁用$digest的触发