【发布时间】:2019-02-22 12:40:40
【问题描述】:
我们正在准备升级我们的 AngularJS 应用程序并为此进行重构。目前我们遇到了一个架构问题:
我们的应用当前通过 jQuery AJAX 调用加载 JSON,这会设置所有数据,然后引导应用。
但是,我们需要将 AJAX 调用移至 Angular,以便我们可以引导应用程序而无需等待 AJAX 返回(这是升级所必需的)
$.get('/ajax/init').done(function (initData) {
walletApp.run([
'SomeService', function (someService) {
// ...
},
]);
walletApp.config([
'SomeProvider', function (someProvider) {
// ...
},
]);
walletApp
.factory('navInfo', function () {
return initData.navInfo;
})
.factory('userInfo', function () {
return initData.userInfo;
});
// ETC
// Below is the important line
angular.bootstrap(document, ['walletApp']);
});
我一直在尝试以下内容,initService 获取 JSON 提要,然后分配所有数据
angular.module('walletApp')
.run([
'InitService', function (initService) {
initService.get();
},
]);
angular.bootstrap(document, ['walletApp']);
但这会导致一系列问题。
我们如何正确加载需要来自 AJAX 的数据才能运行的 AngularJS 应用程序?
【问题讨论】:
-
您是否在使用
$http并提出请求?如果我的理解是正确的,那么您想在加载站点之前加载JSON数据。请确认 -
嗨@ShashankVivek,我正在使用
this.$http.get<any>(url, {params: params})。是的,AJAX 数据是设置工厂和其他数据所必需的。 -
检查我的答案,这是您要找的吗?或者您可以加载网站,然后在显示微调器的同时设置数据,直到通话完成?让我知道您的反馈,以便我提供更好的解决方案
-
在 AJAX 加载时使用微调器就可以了,只要我们可以调用
angular.bootstrap而无需依赖 AJAX 调用即可完成。
标签: angularjs typescript angular-upgrade