我有一个内置angularJS的产品,我创造了近300个控制器。所有控制器都有一个XHR调用(不是$ http调用,它是基本的javascript XMLHttpRequest),用于检查会话数据(通过调用控制器开头的服务)。在开始时我通过以同步方式创建它(同步调用在服务中定义)而犯了一个错误,现在它在mozilla firefox中被弃用,并且很快就会在chrome中弃用。是否有另一种方法可以在不将所有控制器更改为$ watch的情况下进行同步XHR调用?
var request = new XMLHttpRequest();
request.open('POST', 'path/to/my/APIservice', false);
感谢您的帮助。
答案 0 :(得分:1)
感谢@ strong>汤姆詹金斯的回复, 我找到了解决方案。
我已创建一个新状态并从所有其他状态路由到该状态,然后将从新创建的状态/控制器异步加载XHR调用,并在获得响应之后,我将状态重定向到上一个状态加载的数据。
我不知道这是否是实际解决方案,但它节省了我编辑所有300 js文件的时间。 :)
例如:
我正在刷新主页状态,但它需要一些会话数据 从数据库加载以显示页面。然后我将状态重定向到 checkSession 状态,在该控制器中我调用该服务,并在该调用的承诺中将数据存储到$ rootScope然后 使用$ state.go()我将状态重定向到 home 。